Каир: Как обрезать текст в прямоугольник? - PullRequest
0 голосов
/ 16 октября 2018

Использование Cairo под C ++ на Raspberry Pi и попытка обрезать текстовый рисунок внутри заданного прямоугольника.Я бы подумал, что это будет так просто:

cairo_t* cp = cairo_create(psurface);
// set font, etc
cairo_rectangle(cp, 0, 0, 100, 100); // Desired clipping rect
cairo_clip(cp);
cairo_show_text(cp, "pretend that this string is > 100px wide");
cairo_destroy(cp);

, но это не вызывает появления текста.Если я опускаю вызов cairo_clip (), текст появляется (хотя и не клиппированный).Я хочу, чтобы только последние несколько символов строки были обрезаны.В чем прикол?

1 Ответ

0 голосов
/ 17 октября 2018

у меня работает.

enter image description here

#include <cairo.h>

int main()
{
    cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_RGB24, 150, 50);
    cairo_t *cr = cairo_create(s);

    cairo_set_source_rgb(cr, 1, 0, 0);
    cairo_paint(cr);

    cairo_rectangle(cr, 0, 0, 100, 100);
    cairo_clip(cr);
    cairo_move_to(cr, 50, 25);
    cairo_set_source_rgb(cr, 0, 0, 0);
    cairo_show_text(cr, "pretend that this string is > 100px wide");

    cairo_destroy(cr);
    cairo_surface_write_to_png(s, "out.png");
    cairo_surface_destroy(s);

    return 0;
}
...