首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在绘制回调中绘制和在绘制回调之外绘制

在绘制回调中绘制和在绘制回调之外绘制
EN

Stack Overflow用户
提问于 2019-04-06 05:01:39
回答 1查看 37关注 0票数 0

在Gtk3中使用Cairo进行自定义绘制在https://developer.gnome.org/gtk3/stable/ch01s05.html中进行了解释,在拖动鼠标时,draw_brush中的运动通知事件处理程序会绘制小矩形。在原始代码中,没有其他绘图。假设我通过添加以下代码在draw_cb中绘制了一个蓝色实心矩形:

代码语言:javascript
复制
cairo_set_source_rgb(cr,0.1,0.1,0.8);
cairo_rectangle(cr,80,80,50,50);
cairo_fill(cr);

类似地,在clear_surface中从configure_event_cb调用的另一个填充红色矩形,我得到了一个奇怪的行为,蓝色矩形没有被画笔覆盖,但红色矩形被覆盖,如下图所示:

有没有人可以解释这个行为,这样我就可以在我正在开发的应用程序中正确地制作自定义绘图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-07 00:36:08

因此,在clear_surface / configure_event_cb中,可以绘制到surface,这也是画笔绘制到的曲面。由于画笔是稍后绘制的,因此它最终位于您在此处绘制的红色矩形的顶部。

draw_cb中,用于图形的临时曲面将复制到屏幕上。如果您随后在屏幕上绘制了一个蓝色矩形,则此蓝色矩形将最终显示在您之前绘制的内容之上。

所以基本上:原因是这里使用的两个不同的绘图目标。一种是屏幕上的“实际内容”,它随时都可能消失。另一个是在configure_event_cb中创建的内部曲面,它不会意外消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55543306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档