将Gtk.DrawingArea保存到位图

时间:2012-12-11 07:53:28

标签: drawing monodevelop gtk#

我需要将DrawingArea对象的图像保存到Bitmap,但我找不到如何做到这一点。谁能说出,如何将DrawingArea图像保存到Bitmap?

1 个答案:

答案 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