我創建了一個網絡動畫(與之前的nam相似,如果您以前使用過)。使用GTK +平滑動畫+
基本上,我在GTK + DrawingArea上有節點表示爲小點,我更新這些節點的位置,並在一個循環中重繪DrawingArea。
由此產生的動畫是快速,但不光滑(有很多閃爍)。這可能是因爲我在每幀之前使用純色填充了DrawingArea。
您如何看待我最好的解決方案?我應該預先渲染幀到Pixbufs上嗎?有更好的解決方案嗎?
這裏的(使用PyGTK的)我當前的繪圖代碼:
rect = self.drawing_area.get_allocation()
style = self.drawing_area.get_style()
pos = [n.position_at(self.t) for n in self.nodes]
self.drawing_area.window.draw_rectangle(style.bg_gc[gtk.STATE_NORMAL], True,
0, 0, rect.width, rect.height)
for p in pos:
self.drawing_area.window.draw_arc(style.fg_gc[gtk.STATE_NORMAL], True,
rect.width * (p.x/2400.0) - NODE_SIZE/2,
rect.height * (p.y/2400.0) - NODE_SIZE/2,
NODE_SIZE, NODE_SIZE,
0, 64 * 360)
其中self.t
是當前的時間,這是在循環遞增。