开罗:如何将文本剪切成矩形?

时间:2018-10-16 16:55:36

标签: c++ raspberry-pi cairo gdk

在Raspberry Pi上的C ++下使用Cairo,并尝试将文本图形剪切到给定的矩形内。
我以为它会像这样简单:

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 :(得分:1)

为我工作。

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