Использование 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 (), текст появляется (хотя и не клиппированный).
Я хочу, чтобы только последние несколько символов строки были обрезаны.
В чем подвох?
Работает для меня.
#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;
}
Других решений пока нет …