2009-11-21 5 views
0

Dans mon application, je souhaite dessiner des polygones à l'aide de la méthode Windows Create Graphics, puis modifier le polygone en permettant à l'utilisateur de sélectionner les points du polygone et de les repositionner.Dessiner des graphiques vectoriels plus rapides

J'utilise moue move event pour obtenir la nouvelle position du point pour obtenir les nouvelles coordonnées du point déplacé et utiliser Paint event pour redessiner le polygone. L'application fonctionne mais quand un point est déplacé, le mouvement n'est pas lisse.

Je ne connais pas le mouvement de la souris ou l'événement de peinture l'obstacle de performance.

Quelqu'un peut-il faire une suggestion sur la façon d'améliorer cela?

Répondre

1

Vous pourriez ne pas avoir un vrai problème de performance - il se peut que vous ayez juste besoin de dessiner sur un DC éteint puis de le copier sur votre fenêtre, ce qui réduira le scintillement et rendra le mouvement beaucoup plus fluide.

Si vous codez avec l'API Win32, consultez this pour référence.

1

Assurez-vous de ne pas repeindre pour chaque mouvement de la souris. La meilleure façon de le faire est de gérer tous vos événements d'entrée, en modifiant les données polygonales et en définissant un drapeau qui doit être repeint (sur les fenêtres appelant éventuellement InvalidateRect() sans appeler UpdateWindow()).

0

... et bien sûr, assurez-vous d'invalider uniquement la zone qui doit être repeinte. Puisque vous gardez la trace des polygones, invalidez seulement la zone de polygone (l'union rectangulaire des états avant et après).

Questions connexes