gpt4 book ai didi

c - 绘制回调内绘制和绘制回调外绘制

转载 作者:行者123 更新时间:2023-11-30 16:19:43 26 4
gpt4 key购买 nike

Gtk3 中与 Cairo 的自定义绘图在 https://developer.gnome.org/gtk3/stable/ch01s05.html 中进行了解释。这里,当鼠标拖动时,motion-notify-event 处理程序中的 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调用的,我得到了一个奇怪的行为,其中蓝色矩形没有被绘制画笔覆盖,但红色矩形被覆盖,如下图所示: pic

谁能解释一下这种行为,以便我可以在我正在开发的应用程序中正确地制作自定义绘图。

最佳答案

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

draw_cb中,用于绘图的临时表面被复制到屏幕上。如果您随后在屏幕上绘制一个蓝色矩形,则该蓝色矩形最终会位于您之前绘制的内容之上。

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

关于c - 绘制回调内绘制和绘制回调外绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543306/

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