.net - texte - write on effect premiere pro




Animation simple dans WinForms (2)

Imaginez que vous souhaitiez animer un objet sur un formulaire WinForm. Vous configurez une minuterie pour mettre à jour l'état ou le modèle et remplacer l'événement paint du formulaire. Mais à partir de là, quelle est la meilleure façon de repeindre continuellement le formulaire pour l'animation?

  • Invalidez le formulaire dès que vous avez fini de dessiner?
  • Configurer un deuxième temporisateur et invalider le formulaire sur un intervalle régulier?
  • Peut-être qu'il existe un modèle commun pour cette chose?
  • Y a-t-il des classes .NET utiles pour aider?

Chaque fois que je dois faire cela, je découvre une nouvelle méthode avec un nouvel inconvénient. Quelles sont les expériences et les recommandations de la communauté SO?


Ce que vous faites est la seule solution que j'ai jamais utilisée dans WinForms (une minuterie avec des retraits constants). Il existe un tas de techniques que vous pouvez utiliser pour rendre l'expérience de l'utilisateur plus fluide (comme la double-mise en mémoire tampon).

Vous pouvez essayer WPF. Il y a des fonctionnalités intégrées pour faire des animations dans WPF, et elles sont beaucoup plus fluides (et nécessitent moins de code et pas de synchronisation de votre part) qu'une solution basée sur un timer.

Notez que vous n'avez pas besoin d'utiliser WPF dans toute votre application pour cette solution. il est possible d'intégrer cette fonctionnalité dans un contrôle WPF et d'intégrer le contrôle dans une application WinForms (ou une application non gérée, d'ailleurs):

http://www.codeproject.com/KB/WPF/WPF_UserControls.aspx


J'ai créé une bibliothèque qui pourrait aider avec ceci. Il s'appelle Transitions, et peut être trouvé ici: http://code.google.com/p/dot-net-transitions/

Il utilise des timers fonctionnant sur un thread d'arrière-plan pour animer les objets. La bibliothèque est open-source, donc si cela vous est utile, vous pouvez regarder le code pour voir ce qu'il fait.





animation