我需要将DrawingArea对象的图像保存到Bitmap,但我找不到如何做到这一点。谁能说出,如何将DrawingArea图像保存到Bitmap?
答案 0 :(得分:1)
有几种方法可以做到这一点,它取决于你想要做什么以及是否/为什么你真的需要System.Drawing.Bitmap
。
复制小工具
您可以P / Invoke gtk_widget_get_snapshot获取Gdk.Pixbuf
。
Pixbuf可以保存到文件中,也可以复制到System.Drawing.Bitmap
。
使用System.Drawing
您可以将绘图代码移植到System.Drawing API。
在您的DrawingArea的Expose
方法中,使用Gtk.DotNet.Graphics.FromDrawable为您的小部件获取System.Drawing.Graphics
并使用移植的绘图代码绘制到该小部件。
然后,您可以创建System.Drawing.Bitmap
并使用相同的绘图代码绘制它。
使用Cairo
您可以将绘图代码移植到Mono.Cairo
(新的GTK#绘图API,它比System.Drawing强大得多)。
在DrawingArea的Expose
方法中,使用Gdk.CairoHelper.Create
获取窗口小部件的开罗上下文,并使用移植的绘图代码绘制到该窗口。
然后,您可以使用开罗绘图逻辑写入开罗ImageSurface
,可以将其保存到文件中,或复制到System.Drawing.Bitmap
。