如果我仅使用pattern = cairo_pattern_create_for_surface(surface),则无法使用;表面有cairo_t cr的地方。
是的。
下面的代码在10x10的表面上绘制一个十字,然后在其中填充20x20的表面。
#include <cairo.h>
int main()
{
cairo_surface_t *pattern_surface = cairo_image_surface_create(
CAIRO_FORMAT_ARGB32,10,10);
cairo_surface_t *result_surface = cairo_image_surface_create(
CAIRO_FORMAT_ARGB32,20,20);
cairo_t *cr;
cairo_pattern_t *pattern;
cr = cairo_create(pattern_surface);
cairo_move_to(cr,0);
cairo_line_to(cr,10);
cairo_move_to(cr,10);
cairo_stroke(cr);
cairo_destroy(cr);
pattern = cairo_pattern_create_for_surface(pattern_surface);
cairo_pattern_set_extend (pattern,CAIRO_EXTEND_REPEAT);
cr = cairo_create(result_surface);
cairo_set_source(cr,pattern);
cairo_paint(cr);
cairo_destroy(cr);
cairo_surface_write_to_png(result_surface,"out.png");
cairo_surface_destroy(pattern_surface);
cairo_surface_destroy(result_surface);
cairo_pattern_destroy(pattern);
return 0;
}
本文链接:https://www.f2er.com/2706607.html