2009-12-06 6 views
4

J'ai essayé d'animer environ 1000 lignes qui sont toutes ajoutées à un canevas, et c'est extrêmement lent dans la mesure où cette animation n'est pas réalisable du tout. Au début, je pensais que c'était probablement à cause de tous les calculs, mais j'ai ensuite essayé une expérience très simple. J'ai généré environ 1000 lignes aléatoires et j'ai essayé de les déplacer vers de nouvelles coordonnées au hasard en utilisant PointAnimations. J'ai essentiellement exécuté ce programme sur chaque combinaison de système d'exploitation/matériel que j'ai pu trouver et je ne peux même pas obtenir plus de 4 images par seconde.Performances de rendu/animation lentes de WPF?

La source (et un peu plus d'info) se trouve à http://ali.shiravi.com/index.php/wpf-sluggish-rendering-performance/

Quelqu'un at-il des solutions à ce sujet? Est-ce vraiment trop demander à WPF?

Répondre

2

Voici comment je gère une situation comme celle-là. N'essayez pas de déplacer les lignes visibles individuellement, il vous suffit de repeindre la totalité de la collection, mais la dépeindre en bitmap, puis de la transférer en bloc à la fenêtre visible.

Si vous repeignez 1000 lignes directement dans la fenêtre visible, cela peut prendre de 10 à 100 ms et vous verrez probablement clignoter. Mais si vous peignez un bitmap de mémoire, cela prendra probablement le même temps, mais il ne clignotera pas visiblement, car le transfert de bloc à l'écran est si rapide.

Questions connexes