在GTK中使用Mono绘制,而不调用Expose事件

在GTK中使用Mono绘制,而不调用Expose事件,mono,drawing,system.drawing,gtk#,Mono,Drawing,System.drawing,Gtk#,我需要创建一个程序来测试一些程序性的世界创建算法,为此我需要一个曲面来绘制。但是,GTK的DrawingArea小部件要求所有绘图都在ExposesEvent中完成。在不经过此事件处理程序的情况下,如何以及在哪个小部件中绘制?主要问题是,我不能将绘图处理程序附加到事件,因为同一绘图区域由多个算法使用,所以在绘图完成后,我将其删除。如果我调整窗口大小或移动窗口,所有生成的图形都会消失,这不是很有用 我试着使用Mono.Cairo而不是System.Drawing,但同样的规则似乎也适用于它。 提前

我需要创建一个程序来测试一些程序性的世界创建算法,为此我需要一个曲面来绘制。但是,GTK的DrawingArea小部件要求所有绘图都在ExposesEvent中完成。在不经过此事件处理程序的情况下,如何以及在哪个小部件中绘制?主要问题是,我不能将绘图处理程序附加到事件,因为同一绘图区域由多个算法使用,所以在绘图完成后,我将其删除。如果我调整窗口大小或移动窗口,所有生成的图形都会消失,这不是很有用

我试着使用Mono.Cairo而不是System.Drawing,但同样的规则似乎也适用于它。
提前感谢。

您需要使用脱机pixmap(带Gtk/Gdk)或surface(Cairo),以便对其进行所有绘制,并且在曝光事件发生时,只需将图像复制到显示小部件。 查看Mono.Cairo示例(并检查该文件的较旧版本中的Cairo-less代码,但我建议继续使用Cairo)