2012-04-22 76 views
3

我已經在Linux下使用C和GTK編寫了一個基本的老虎機模擬。老虎機是5個卷軸,每個卷軸有3個符號。爲了「旋轉」旋轉動作,我只使用GtkImages數組3,5中的動畫GIF。GTK上的2D老虎機類型動畫+

我真的希望它看起來像一個適當的老虎機,其中每個卷軸都進行垂直動畫。我會想象我需要從卷軸上的符號構建像素圖或pixbuf,使用g_timer_add()更改GtkImage上像素圖的可見部分。我是Gtk +的新手,所以如果有人有這種類型的動畫或優秀文檔的簡單例子,我會永遠感激。

謝謝。

+0

我想你可能更適合使用遊戲編程工具包... – ptomato 2012-04-23 11:47:11

回答

1

使用GtkDrawingArea而不是GtkImage,因此您可以隨意繪製。將所有可能的圖像放在垂直的PNG圖像中,就像展開卷軸一樣。然後將其加載到pixbuf中,使用cairo爲它創建一個表面。您只需使用cairo繪製該大圖像的一小部分,您可以通過垂直偏移來引用該大圖像。使用帶g_timer_add的定時器以每秒足夠的幀數刷新它(計算所需的速度)。不要將定時器回調視爲理所當然,回調觸發可能會延遲。最好的方法是使用GTimer,在你想讓卷軸旋轉的時候開始,在g_timer_add回調中測量自啓動GTimer以來的時間。這將允許您計算圖像的偏移量。

+0

感謝您的詳細和有益的迴應。 – Chimera 2012-04-23 19:45:52

+0

順便說一句,要繪製一個GtkDrawingArea,看一下配置事件來跟蹤小部件大小的變化,以及「揭發事件」(對於GTK2)或「繪製」事件(對於GTK3)來處理繪圖。 – liberforce 2012-04-25 11:11:29