Я создаю сетевой аниматор (аналогично 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
текущее время, которое увеличивается в цикле.