gpt4 book ai didi

c++ - 开罗:重新填充一个对象(圆圈)并删除它

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:57 32 4
gpt4 key购买 nike

我正在使用 cairo 绘制一些圆弧,这是函数。

cairo_t* drawCircle(cairo_surface_t *container, int x, int y, int r, int cr, int cg, int   cb, int ca)
{
cairo_t *cairoInstance; //Create instance
cairoInstance = cairo_create(container);

cairo_set_source_rgba(cairoInstance, 0,0,1,0.5);
cairo_arc(cairoInstance, x, y, r, 0, 2*M_PI);
cairo_stroke_preserve(cairoInstance);
cairo_fill(cairoInstance);


gtk_widget_queue_draw_area(GTK_WIDGET(window), 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); //Redraws the window

return cairoInstance;
}

第一个问题:我后面改source_rgba再fill的时候,会把之前的颜色给覆盖掉。有没有办法在用不同的颜色再次填充之前重置填充?

其次,如果我想稍后取消渲染/删除圆弧/圆,我该怎么做?我尝试使用 cairo_destroy 但它似乎破坏了实例而不是删除实际对象。

谢谢!

最佳答案

Cairo 使用模板/绘画模型,因此绘图(通常)是在现有图像1 之上完成的。

它不维护图层或对象。就像在纸上画画一样,画完圆后不能移动修改圆。它已成为像素图中的一种模式。

删除圆,用原始背景填充整个图像(cairo_set_source_rgb(cr, 1, 1, 1); cairo_paint(cr)),然后重绘一切除了圆圈。

<子>1。您可以更改光栅操作码以进行其他类型的合成。

关于c++ - 开罗:重新填充一个对象(圆圈)并删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256613/

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