我需要创建一个程序来测试一些程序世界创建算法,我需要一个表面来绘制。但是,GTK#的DrawingArea小部件要求所有绘图都在ExposesEvent中完成。如何以及在不通过此事件处理程序的情况下绘制哪个窗口小部件?主要问题是我不能将绘图处理程序附加到事件,因为多个算法使用相同的绘图区域,因此在绘制完成后我将其删除。如果我调整大小或移动窗口,那么所有生成的图形都会消失,这不是很有用。
我尝试使用Mono.Cairo而不是System.Drawing,但同样的规则似乎适用于它。 提前谢谢。
答案 0 :(得分:2)
您需要使用离线像素图(使用Gtk / Gdk)或曲面(开罗),这样您就可以完成所有绘图,当曝光事件发生时,您只需将图像副本复制到显示小部件。 有关Mono.Cairo示例,请参阅此https://github.com/mono/gtk-sharp/blob/master/sample/Scribble.cs(并查看该文件的旧版本以了解无开头代码,但我建议继续使用Cairo。)