gpt4 book ai didi

绘图区开罗多个形状

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:59 30 4
gpt4 key购买 nike

我正在尝试了解 Cairo 框架;但我不知道如何将多个形状放入绘图区域。我看到的所有代码/教程要么太高级,要么与此问题无关。

这是我画圆的代码(我使用的是 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() 中起作用;您需要查看文档以获取信息。)

The cairo documentation是开始了解开罗的最佳地点;它有很多教程和示例。

关于绘图区开罗多个形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743480/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com