[英]Cairo multiple shapes in drawing area
我试图了解开罗框架; 但我不知道如何在绘图区域中放置多个形状。 我见过的所有代码/教程都太高级了,或者与这个问题无关。
这是我的画圆的代码(我使用C和gtk + 3.0):
void draw(GtkWidget *this, cairo_t *cr, gpointer data) {
cairo_set_line_width(cr, 5);
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_translate(cr, prog.width/2, prog.height/2);
cairo_arc(cr, 0, 0, 50, 0, 2 * M_PI);
cairo_stroke_preserve(cr);
cairo_set_source_rgb(cr, 0.9, 0.9, 0.9);
cairo_fill(cr);
}
我了解的只有一件事: cairo_t *cr
。 从我一直在搜索cr
是一个上下文,但是并没有完全了解它的含义(也许我的问题在于这种理解吗?)。
因此,如果我需要在这个圆附近有更多的圆,该如何创建它们?
我的尝试是使用cairo_move_to(cr, x, y)
并绘制另一个形状,但显然没有用。
谢谢!
是的, cairo_t
是cairo上下文的类型。
要在cairo上进行绘制,您可以设置绘制参数,定义要绘制的颜色或图像的源以及指定要绘制的形状的路径 ,然后调用cairo_stroke()
或cairo_fill()
进行实际绘制。 调用它们之后,将重置路径(除非使用函数的_preserve
版本),但其他所有内容均保持不变。
因此,要再次绘制,只需在第一个之后添加更多的设置和绘制函数调用即可。
cairo_move_to()
实际上不会移动任何东西。 cairo_move_to()
作用是更改路径“当前点”的位置。 稍后添加的路径组件,例如cairo_line_to()
,将从当前点开始,然后将当前点设置为其终点。
在您的情况下,可以通过在绘制处理程序的最后一行之后添加cairo_move_to()
来绘制多个圆,然后重复用于绘制第一个圆的步骤。
cairo_arc()
是不同的,因为您将弧的中心指定为第二个和第三个参数。 要在其他地方绘制圆弧,您需要更改这两个参数。 (当前点确实在cairo_arc()
中cairo_arc()
;您需要查看文档以获取信息。)
cairo文档是开始学习cairo的最佳场所。 它有很多教程和示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.