Dessin numérique

Animation fluide en C #

Posted by admin

Générer des animations fluides avec C # sur différents systèmes informatiques peut être une tâche difficile. Cependant, il existe une méthode simple pour adapter le comportement d’un programme à un nombre cible d’images par seconde.

L’animation d’objets avec C # peut signifier un certain nombre de choses différentes.

Tout d’abord, animer une série d’images photo serait comme un GIF animé. Dans ce cas, il existe déjà une prise en charge dans le .Net Framework, mais vous souhaiterez peut-être gérer le dessin par image.

Une autre forme d’animation consiste à utiliser des graphiques générés par du code. GDI% 2B peut dessiner des graphiques très complexes et les animer en douceur peut apporter une dimension supplémentaire de qualité à vos applications .Net.

Enfin, les programmeurs souhaitent parfois animer le comportement du formulaire de fenêtre tel que la taille, la position, le texte, etc. Bien qu’il s’agisse de propriétés d’objet, nous voulons qu’elles changent dans un intervalle régulier quelle que soit la vitesse du processeur de l’ordinateur.

La première étape pour écrire une animation FPS constante en C # consiste à déterminer la façon de mesurer les cycles du processeur. Les objets les plus couramment utilisés pour mesurer le temps sont l’objet Timer et la classe DateTime. Bien que les deux soient faciles à utiliser, ils manquent de précision. Au lieu de cela, nous allons utiliser la classe System.Diagonistics.StopWatch.

La classe StopWatch utilise l’appel d’API QueryPerformanceTimer pour suivre les cycles du processeur, ce qui est plus précis. Dans ce cas, une plus grande précision signifie une animation plus constante.

Fondamentalement, vous voulez garder une trace de trois valeurs, dont deux changent constamment:

  • Intervalle = Fréquence du chronomètre / [target FPS (30.0 for example)]
  • currentTicks = Chronomètre.GetTimestamp ()
  • lastTicks = identique à currentTicks mais pris la dernière fois que l’animation a été dessinée

La logique derrière l’algorithme C # n’est pas trop compliquée. Fondamentalement, il y aura une boucle en cours d’exécution tout le temps, mais vous ne voulez que l’animation s’exécute / se rafraîchisse lorsque le dernier nombre de cycles CPU et le nombre actuel de cycles sont au moins un intervalle de l’intervalle que vous avez précédemment calculé. Ce n’est qu’alors que l’animation sera rafraîchie.

Le résultat est une animation constante, quelle que soit la vitesse d’un ordinateur. Ajustez simplement le FPS dans votre propre système et c’est la vitesse perçue entre les systèmes.

La raison pour laquelle cela fonctionne est que les animations ne fonctionnent pas sans réfléchir sur une simple boucle while / for. La boucle utilise les cycles du processeur de l’ordinateur hôte pour ajuster l’intervalle auquel l’animation est actualisée.

Leave A Comment