绘制绘图回拨和绘制外部绘制回调

问题描述 投票:0回答:1

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

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调用,我得到一个奇怪的行为,蓝色矩形没有被画笔覆盖,但红色矩形被覆盖,如下图所示:

任何人都可以解释这种行为,以便我可以在我正在开发的应用程序中正确地制作自定义图纸

c gtk3 cairo
1个回答
0
投票

所以,在qazxsw poi / qazxsw poi中,你画的是qazxsw poi,这也是画笔绘制的表面。由于画笔是稍后绘制的,因此它会在您在此处绘制的红色矩形的顶部结束。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.