Partager via


Graphiques mis deux fois en mémoire tampon

Mise à jour : novembre 2007

Le scintillement est un problème commun lors de la programmation de graphiques. Les opérations graphiques qui requièrent plusieurs opérations de peinture complexes peuvent donner l'impression que les images rendues scintillent ou ont une apparence inacceptable. Pour traiter ces problèmes, le .NET Framework fournit l'accès au mécanisme de double tampon.

Le mécanisme de double tampon utilise une mémoire tampon pour traiter les problèmes de scintillement associés aux opérations de peinture multiples. Lorsque le mécanisme de double tampon est activé, toutes les opérations de peinture sont restituées en premier à une mémoire tampon à la place de la surface de dessin sur l'écran. Après avoir effectué toutes les opérations de peinture, la mémoire tampon est copiée directement vers la surface de dessin qui lui est associée. Dans la mesure où une seule opération graphique est exécutée sur l'écran, le scintillement de l'image associé aux opérations de peinture complexes est éliminé.

Mécanisme de double tampon par défaut

La façon la plus facile d'utiliser le mécanisme de double tampon dans vos applications est d'utiliser le mécanisme de double tampon par défaut pour les formulaires et les contrôles qui est fourni par le .NET Framework. Vous pouvez activer le mécanisme de double tampon par défaut pour vos Windows Forms et contrôles Windows créés en attribuant à la propriété DoubleBuffered la valeur true ou en utilisant la méthode SetStyle. Pour plus d'informations, consultez Comment : réduire le scintillement des graphiques à l'aide du mécanisme de double tampon pour les formulaires et les contrôles.

Gestion manuelle des graphiques mis en mémoire tampon

Pour des scénarios plus avancés de mécanisme de double tampon, tels que l'animation ou la gestion de mémoire avancée, vous pouvez utiliser les classes .NET Framework pour implémenter votre propre logique de mécanisme de double tampon. La classe responsable de l'allocation et de la gestion des mémoires tampon de graphiques individuelles est la classe BufferedGraphicsContext. Chaque domaine d'application a sa propre instance de BufferedGraphicsContext par défaut qui gère tout le mécanisme de double tampon par défaut pour cette application. Dans la plupart des cas, il n'y aura qu'un seul domaine d'application par application ; il y a, donc, en général un 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 BufferedGraphicsManager.Current Property. Vous pouvez également créer une instance de BufferedGraphicsContext dédiée qui peut améliorer les performances des applications à forte intensité graphique. Pour plus d'informations sur la création d'une instance de BufferedGraphicsContext, consultez Comment : 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 tampon de graphiques en appelant la méthode BufferedGraphicsContext.Allocate qui retourne une instance de la classe BufferedGraphics. Un objet BufferedGraphics gère une mémoire tampon qui est associée à une surface de rendu, telle qu'un formulaire ou un contrôle.

Après qu'il a été instancié, la classe BufferedGraphics gère le rendu dans une mémoire tampon de graphiques en mémoire. Vous pouvez restituer des graphiques à la mémoire tampon à travers la propriété BufferedGraphics.Graphics, laquelle expose un objet Graphics qui représente directement la mémoire tampon. Vous pouvez peindre sur cet objet Graphics comme vous le feriez sur un objet Graphics qui représente une surface de dessin. Après que tous les graphiques ont été dessinés dans la mémoire tampon, vous pouvez utiliser la méthode BufferedGraphics.Render pour copier le contenu de la mémoire tampon vers la surface de dessin sur 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 de graphiques, consultez Graphiques et dessins dans les Windows Forms

Voir aussi

Tâches

Comment : restituer manuellement des graphiques mis en mémoire tampon

Comment : réduire le scintillement des graphiques à l'aide du mécanisme de double tampon pour les formulaires et les contrôles

Comment : gérer manuellement des graphiques mis en mémoire tampon

Référence

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

Autres ressources

Graphiques et dessins dans les Windows Forms