Je crée un animateur de réseau (similaire à nam, si vous l'avez déjà utilisé).Animations fluides utilisant GTK +
Fondamentalement, j'ai des nœuds représentés sous forme de petits points sur un DrawingArea GTK +, et je mets à jour les positions de ces nœuds et redessiner le DrawingArea dans une boucle.
L'animation qui en résulte est rapide, mais pas lisse (il y a beaucoup de scintillement). C'est probablement parce que je remplis le DrawingArea avec une couleur solide avant chaque image.
Comment croyez-vous que je peux le mieux résoudre ce problème? Dois-je pré-rendre les images sur Pixbufs? Y a-t-il une meilleure solution?
Voici mon code de dessin en cours (en utilisant 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)
où self.t
est l'heure actuelle, qui est incrémenté dans la boucle.