C语言 开罗剪辑区域存在多个矩形?

gab6jxml  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(79)

我需要一个剪辑区域,存在的几个(可能重叠)的矩形,但不知道如何创建一个与cairo。
既然有

cairo_rectangle_list_t *
cairo_copy_clip_rectangle_list (cairo_t *cr);

字符串
我假设剪辑区域可以存在多个矩形(如果不存在,则不会返回矩形列表...)
而且,cairo_rectangle_list_t是存在的--那么我肯定可以自己创建一个矩形列表......并从中创建剪辑区域吗?
但怎么做呢?

91zkwejq

91zkwejq1#

只需创建一个由几个矩形组成的路径,并使用它进行剪辑。下面是一个有两个重叠矩形的示例,但它对更多矩形也同样有效。


的数据

#include <cairo.h>

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

    cairo_set_source_rgb(cr, 1, 1, 1);

    cairo_rectangle(cr, 10, 10, 50, 50);
    cairo_rectangle(cr, 40, 40, 50, 50);
    cairo_clip(cr);
    cairo_paint(cr);

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

字符串

相关问题