使用Cairo动画时固定模式

时间:2018-11-04 11:33:06

标签: image animation cairo gtk2

我正在用开罗为文本填充动画。问题在于,当文本移动时,图案也“移动”了。如何将模式固定在文本字符内?请参阅所附的两个屏幕截图。

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 );

谢谢

animation end animation start

1 个答案:

答案 0 :(得分:0)

默认情况下,表面图案将源表面的(0,0)置于目标表面的(0,0)。要更改此设置,可以使用cairo_set_source_surface将表面直接设置为具有给定偏移量的图案。或者,您可以像在代码中一样显式地使用模式,并使用cairo_matrix_init_translatecairo_pattern_set_matrix设置一些转换矩阵。