2012-12-11 97 views
0

我需要將我的DrawingArea對象的圖像保存到位圖,但我找不到如何去做。任何人都可以告訴,如何將DrawingArea圖像保存到位圖?將Gtk.DrawingArea保存到位圖

回答

1

有幾種方法可以做到這一點,它取決於你想要做什麼,以及/爲什麼你真的需要System.Drawing.Bitmap

複製了Widget

可以的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並使用相同的繪圖代碼進行繪製。

使用開羅

你可以端口繪圖代碼Mono.Cairo(新GTK#繪圖API,它比System.Drawing中更強大)。

在您的DrawingArea的Expose方法中,使用Gdk.CairoHelper.Create爲您的小部件獲取Cairo上下文,並使用移植的繪圖代碼將其繪製到該上下文上。

然後,您可以使用開羅繪圖邏輯寫入開羅ImageSurface,可以將其保存到文件中,也可以複製到System.Drawing.Bitmap中。

+0

非常感謝!我會嘗試 – Mixim