我正在用开罗为文本填充动画。问题在于,当文本移动时,图案也“移动”了。如何将模式固定在文本字符内?请参阅所附的两个屏幕截图。
if (pattern_filename)
{
cairo_surface_t *tmp_surf;
cairo_pattern_t *font_pattern;
tmp_surf = cairo_image_surface_create_from_png(pattern_filename);
font_pattern = cairo_pattern_create_for_surface(tmp_surf);
cairo_pattern_set_extend (font_pattern, CAIRO_EXTEND_REPEAT);
cairo_set_source(cr, font_pattern);
}
else
{
/* Draw the subtitle */
/* Set source color */
cairo_set_source_rgba( cr, font_color[0],
font_color[1],
font_color[2],
font_color[3] );
}
/* Move to proper place and paint text */
cairo_move_to( cr, posx, posy );
pango_cairo_show_layout( cr, layout );
谢谢
答案 0 :(得分:0)
默认情况下,表面图案将源表面的(0,0)置于目标表面的(0,0)。要更改此设置,可以使用cairo_set_source_surface
将表面直接设置为具有给定偏移量的图案。或者,您可以像在代码中一样显式地使用模式,并使用cairo_matrix_init_translate
和cairo_pattern_set_matrix
设置一些转换矩阵。