2010-10-06 78 views
0

我試圖顯示一個圖像,我從一個pixbuf(從內存中的數據)加載,並且圖像每次都會更新(因爲pixbuf也隨着時間而改變)。我的問題是,由於該窗口只包含圖像(定期更新),我需要一個gtk繪圖區還是繪圖區?或者我可以簡單地在窗口中顯示圖像?另一種選擇是使用開羅。任何人都可以請建議一個好方法來做到這一點?在gtk中顯示圖像 - 是否需要gtk繪圖區域?

回答

1

將文件加載到一個pixbuf的簡單,有一個new_from_file構造函數或東西這一點。

是的,創建一個DrawingArea並將其粘貼在Box或某處。

接下來,得到DrawingArea父窗口(將有一個像get_window或類似的方法)。這將是你的Drawable。

創建一個GC(圖形上下文) - 你不需要在其中設置任何特殊值。

將DrawingArea連接到公開事件。在公開事件中,使用您創建的GC與pixbuf調用Drawable上的draw_pixbuf方法。

無論何時您以某種方式更新pixbuf,請調用此相同的draw_pixbuf方法。

如果您沒有從文件加載它並打算在其上繪製,您可能還想考慮使用像素映射。像素圖本身是一個可繪製的,所以你可以直接在其上繪製矩形和東西。在DrawingArea上顯示它唯一真正的區別是你需要在drawable上調用draw_drawable方法而不是draw_pixbuf。

請注意,我從使用Perl/Gtk2的內存中編寫它,並且它可能不會乾淨地映射到您正在使用的任何語言。

+0

thnx爲你的答覆...我將使用C語言...但我會嘗試你的方法..yeah函數調用將有所不同...我'我看着它...... thnx反正...... – linuxnewbie 2010-10-11 10:06:40

0

一個GtkImage會工作得很好,而且比所有的東西你上市;-)

+0

thanx ...但我試圖使用GtkImage ...但我無法每次顯示圖像...我使用公開事件和gtk_widget_queue_draw(窗口)每次顯示更新的圖像..但我得到的只是一個空白的窗口...還有什麼我需要做的每次顯示修改後的圖像?我會發布的代碼,如果需要的話...... – linuxnewbie 2010-10-07 03:07:05