Partager via


Graphiques mis deux fois en mémoire tampon

Le scintillement est un problème courant lors de la programmation de graphiques. Les opérations graphiques qui nécessitent plusieurs opérations de peinture complexes peuvent provoquer le scintillement des images rendues ou avoir une apparence inacceptable. Pour résoudre ces problèmes, le .NET Framework fournit l’accès à la double mise en mémoire tampon.

La double mise en mémoire tampon utilise une mémoire tampon pour résoudre les problèmes de scintillement associés aux opérations de dessin multiples. Lorsque la double mise en mémoire tampon est activée, toutes les opérations de peinture sont d’abord rendues dans une mémoire tampon au lieu de la surface de dessin sur l’écran. Une fois toutes les opérations de peinture terminées, la mémoire tampon est copiée directement dans la surface de dessin associée. Étant donné qu’une seule opération graphique est effectuée sur l’écran, le scintillement de l’image associé à des opérations de peinture complexes est éliminé.

Doubles mise en mémoire tampon par défaut

Le moyen le plus simple d’utiliser le double buffering dans vos applications est d’employer celui par défaut pour les formulaires et les contrôles fourni par le .NET Framework. Vous pouvez activer la double mémoire tampon par défaut pour vos contrôles Windows Forms et vos contrôles Windows personnalisés en définissant la propriété DoubleBuffered sur true ou à l’aide de la méthode SetStyle. Pour plus d’informations, consultez Aide et Astuces : réduire le scintillement des graphiques à l’aide du mécanisme de double mise en mémoire tampon pour les formulaires et les contrôles.

Gestion manuelle des graphiques mis en mémoire tampon

Pour les scénarios de double mise en mémoire tampon plus avancés, tels que l’animation ou la gestion avancée de la mémoire, vous pouvez utiliser les classes .NET Framework pour implémenter votre propre logique de mise en mémoire tampon double. La classe responsable de l’allocation et de la gestion de mémoires tampons graphiques individuelles est la classe BufferedGraphicsContext. Chaque domaine d’application possède sa propre instance de BufferedGraphicsContext par défaut qui gère l’ensemble de la mise en mémoire tampon double par défaut pour cette application. Dans la plupart des cas, il n’y aura qu’un seul domaine d’application par application. Il existe donc généralement une BufferedGraphicsContext par défaut par application. Les instances de BufferedGraphicsContext par défaut sont gérées par la classe BufferedGraphicsManager. Vous pouvez récupérer une référence à l’instance de BufferedGraphicsContext par défaut en appelant le Current. Vous pouvez également créer une instance de BufferedGraphicsContext dédiée, ce qui peut améliorer les performances des applications graphiquement intensives. Pour plus d’informations sur la création d’une instance de BufferedGraphicsContext, consultez Guide pratique pour gérer manuellement des graphiques mis en mémoire tampon.

Affichage manuel des graphiques mis en mémoire tampon

Vous pouvez utiliser une instance de la classe BufferedGraphicsContext pour créer des mémoires tampons graphiques en appelant le BufferedGraphicsContext.Allocate, qui retourne une instance de la classe BufferedGraphics. Un objet BufferedGraphics gère une mémoire tampon associée à une surface de rendu, telle qu’un formulaire ou un contrôle.

Une fois instanciée, la classe BufferedGraphics gère le rendu sur une mémoire tampon graphique. Vous pouvez restituer des graphiques à la mémoire tampon via le Graphics, qui expose un objet Graphics qui représente directement la mémoire tampon. Vous pouvez peindre cet objet Graphics comme vous le feriez à un objet Graphics qui représente une surface de dessin. Une fois que tous les graphiques ont été dessinés dans la mémoire tampon, vous pouvez utiliser l'BufferedGraphics.Render pour copier le contenu de la mémoire tampon sur l’aire de dessin à l’écran.

Pour plus d’informations sur l’utilisation de la classe BufferedGraphics, consultez Rendu manuel des graphiques mis en mémoire tampon. Pour plus d’informations sur le rendu des graphiques, consultez Graphics and Drawing in Windows Forms

Voir aussi