Каир: Как обрезать текст в прямоугольник?

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

cairo_t * cp = cairo_create (psurface);
// установить шрифт и т. д.
cairo_rectangle (cp, 0, 0, 100, 100); // Желаемый прямоугольник отсечения
cairo_clip (ф);
cairo_show_text (cp, «представьте, что эта строка имеет ширину> 100 пикселей»);
cairo_destroy (ф);

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

0

Решение

Работает для меня.

введите описание изображения здесь

#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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]