繁体   English   中英

开罗绘图区域中的多种形状

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM