Исправление рисунка при анимации с Каиром - PullRequest
0 голосов
/ 04 ноября 2018

Я оживляю текст, заполненный узором, с помощью Каира. Проблема в том, что когда текст перемещается, шаблон «перемещается». Как я могу сохранить шаблон внутри символов текста? Пожалуйста, смотрите два скриншота прилагаются.

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

Спасибо

конец анимации начало анимации

1 Ответ

0 голосов
/ 13 ноября 2018

По умолчанию рисунок поверхности помещает (0,0) исходной поверхности в (0,0) целевой поверхности. Чтобы изменить это, вы можете использовать cairo_set_source_surface, чтобы напрямую установить поверхность как узор с некоторым заданным смещением. Или вы можете явно использовать шаблон, как в своем коде, и установить некоторую матрицу перевода с помощью cairo_matrix_init_translate и cairo_pattern_set_matrix.

...