0

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

4

1 回答 1

1

有几种方法可以做到这一点,这完全取决于您想要做什么以及您是否/为什么真的需要System.Drawing.Bitmap.

复制小部件

您可以 P/Invoke gtk_widget_get_snapshot以获取Gdk.Pixbuf.

Pixbuf 可以保存到一个文件中,或者复制到一个System.Drawing.Bitmap.

使用 System.Drawing

您可以将绘图代码移植到 System.Drawing API。

在您的 DrawingAreaExpose方法中,使用Gtk.DotNet.Graphics.FromDrawable为您的小部件获取一个System.Drawing.Graphics,并使用您移植的绘图代码在其上绘制。

然后,您可以创建一个System.Drawing.Bitmap并使用相同的绘图代码对其进行绘图。

使用开罗

您可以将绘图代码移植到Mono.Cairo(新的 GTK# 绘图 API,它比 System.Drawing 更强大)。

在您的 DrawingAreaExpose方法中,使用Gdk.CairoHelper.Create为您的小部件获取 Cairo 上下文,并使用您移植的绘图代码在该上下文上绘制。

然后,您可以使用 Cairo 绘图逻辑写入 Cairo ImageSurface,可以将其保存到一个文件中,或者复制到一个System.Drawing.Bitmap.

于 2012-12-12T23:14:55.097 回答