使用模式生成时访问 cairo_path_t
Access cairo_path_t when generated using a pattern
我很感兴趣在开罗画各种路径。然后通过 cairo_path_t 和 cairo_path_data_t 访问这些路径以供 pango 使用。当我使用模式时,这会成为一个问题。例如,以下代码效果很好。
cairo_surface_t* pat_surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 2 * 500, 1000);
cairo_t* pat;
if (pat_surf)
pat = cairo_create(pat_surf);
cairo_translate(pat, amp, line_width);
cairo_move_to(pat, 0, 0);
cairo_line_to(pat, 500, 500);
cairo_translate(pat, -500, 0);
我可以使用 pat 访问路径。但是,如果我将其用作重复模式。路径丢失了。
cr = cairo_create(result_surface);
cairo_pattern_t* pattern1 = cairo_pattern_create_for_surface(pat_surf);
cairo_pattern_set_extend(pattern1, CAIRO_EXTEND_REPEAT);
cairo_translate(cr, 200, 400);
cairo_set_source(cr, pattern1);
cairo_translate(cr, -200, -400);
我无法使用 cr 访问任何路径。作为测试,如果我添加一个矩形来定义 window,则只有 window 路径可见。重复模式消失。
cairo_rectangle(cr, 0, 200, 1000, 400);
知道我做错了什么吗?
cairo_path_t
代表路径。但是,您的代码包含这一行:
cairo_set_source(cr, pattern1);
来源与路径不同。因此,当然更改源不会更改路径。
有点不同:
- 来源定义了用于绘图的“颜色”,其中“颜色”在引号中,因为它也可以是渐变甚至整个表面。
- 路径定义了源的哪些部分用于绘图。
请参阅 https://www.cairographics.org/tutorial/#L3source and https://www.cairographics.org/tutorial/#L3path(也许还有整个教程,因为我 link 的部分有点密集)。
我很感兴趣在开罗画各种路径。然后通过 cairo_path_t 和 cairo_path_data_t 访问这些路径以供 pango 使用。当我使用模式时,这会成为一个问题。例如,以下代码效果很好。
cairo_surface_t* pat_surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 2 * 500, 1000);
cairo_t* pat;
if (pat_surf)
pat = cairo_create(pat_surf);
cairo_translate(pat, amp, line_width);
cairo_move_to(pat, 0, 0);
cairo_line_to(pat, 500, 500);
cairo_translate(pat, -500, 0);
我可以使用 pat 访问路径。但是,如果我将其用作重复模式。路径丢失了。
cr = cairo_create(result_surface);
cairo_pattern_t* pattern1 = cairo_pattern_create_for_surface(pat_surf);
cairo_pattern_set_extend(pattern1, CAIRO_EXTEND_REPEAT);
cairo_translate(cr, 200, 400);
cairo_set_source(cr, pattern1);
cairo_translate(cr, -200, -400);
我无法使用 cr 访问任何路径。作为测试,如果我添加一个矩形来定义 window,则只有 window 路径可见。重复模式消失。
cairo_rectangle(cr, 0, 200, 1000, 400);
知道我做错了什么吗?
cairo_path_t
代表路径。但是,您的代码包含这一行:
cairo_set_source(cr, pattern1);
来源与路径不同。因此,当然更改源不会更改路径。
有点不同:
- 来源定义了用于绘图的“颜色”,其中“颜色”在引号中,因为它也可以是渐变甚至整个表面。
- 路径定义了源的哪些部分用于绘图。
请参阅 https://www.cairographics.org/tutorial/#L3source and https://www.cairographics.org/tutorial/#L3path(也许还有整个教程,因为我 link 的部分有点密集)。