Graphiques mis deux fois en mémoire tamponDouble Buffered Graphics

Le scintillement est un problème courant lors de la programmation de graphiques.Flicker is a common problem when programming graphics. Les opérations graphiques qui nécessitent plusieurs opérations de dessin complexes peuvent provoquer le scintillement du rendu des images ou une apparence qui n’est pas acceptable.Graphics operations that require multiple complex painting operations can cause the rendered images to appear to flicker or have an otherwise unacceptable appearance. Pour résoudre ces problèmes, le .NET Framework fournit un accès à la double mise en mémoire tampon.To address these problems, the .NET Framework provides access to double buffering.

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.Double buffering uses a memory buffer to address the flicker problems associated with multiple paint operations. Quand la double mise en mémoire tampon est activée, toutes les opérations de dessin sont d’abord rendues dans une mémoire tampon au lieu de l’être sur la surface de dessin à l’écran.When double buffering is enabled, all paint operations are first rendered to a memory buffer instead of the drawing surface on the screen. Une fois que toutes les opérations de dessin sont terminées, la mémoire tampon est copiée directement sur la surface de dessin qui y est associée.After all paint operations are completed, the memory buffer is copied directly to the drawing surface associated with it. Comme une seule opération de dessin est effectuée sur l’écran, le scintillement de l’image associé aux opérations de dessin complexes est éliminé.Because only one graphics operation is performed on the screen, the image flickering associated with complex painting operations is eliminated.

Doubles mise en mémoire tampon par défautDefault Double Buffering

La façon la plus simple d’utiliser la double mise en mémoire tampon dans vos applications consiste à utiliser la double mise en mémoire tampon par défaut pour les formulaires et les contrôles qui est fournie par le .NET Framework.The easiest way to use double buffering in your applications is to use the default double buffering for forms and controls that is provided by the .NET Framework. Vous pouvez activer la double mise en mémoire tampon pour vos formulaires Windows et créé des contrôles de Windows en définissant le DoubleBuffered propriété true ou à l’aide de la SetStyle (méthode).You can enable default double buffering for your Windows Forms and authored Windows controls by setting the DoubleBuffered property to true or by using the SetStyle method. Pour plus d'informations, voir Procédure : Réduire le scintillement des graphiques avec Double mise en tampon pour les formulaires et contrôles.For more information, see How to: Reduce Graphics Flicker with Double Buffering for Forms and Controls.

Gestion manuelle des graphiques mis en mémoire tamponManually Managing Buffered Graphics

Pour des scénarios plus avancés de double mise en mémoire tampon, comme 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 double mise en mémoire tampon.For more advanced double buffering scenarios, such as animation or advanced memory management, you can use the .NET Framework classes to implement your own double-buffering logic. La classe responsable de l’allocation et la gestion des mémoires tampon de graphiques individuelles est la BufferedGraphicsContext classe.The class responsible for allocating and managing individual graphics buffers is the BufferedGraphicsContext class. Chaque domaine d’application a sa propre valeur par défaut BufferedGraphicsContext instance qui gère toute la double mise en mémoire tampon pour l’application de la valeur par défaut.Every application domain has its own default BufferedGraphicsContext instance that manages all of the default double buffering for that application. Dans la plupart des cas il y aura qu’un seul domaine d’application par application, il est généralement une valeur par défaut BufferedGraphicsContext par application.In most cases there will be only one application domain per application, so there is generally one default BufferedGraphicsContext per application. Par défaut BufferedGraphicsContext instances sont gérés par la BufferedGraphicsManager classe.Default BufferedGraphicsContext instances are managed by the BufferedGraphicsManager class. Vous pouvez récupérer une référence à la valeur par défaut BufferedGraphicsContext instance en appelant le Current.You can retrieve a reference to the default BufferedGraphicsContext instance by calling the Current. Vous pouvez également créer un dédié BufferedGraphicsContext instance, ce qui peut améliorer les performances pour les applications gourmandes en ressources graphiques.You can also create a dedicated BufferedGraphicsContext instance, which can improve performance for graphically intensive applications. Pour plus d’informations sur la création d’un BufferedGraphicsContext une instance, consultez Comment : Gérer manuellement des graphiques mis en mémoire tampon.For information on how to create a BufferedGraphicsContext instance, see How to: Manually Manage Buffered Graphics.

Affichage manuel de graphiques mis en mémoire tamponManually Displaying Buffered Graphics

Vous pouvez utiliser une instance de la BufferedGraphicsContext classe pour créer des mémoires tampons de graphiques en appelant le BufferedGraphicsContext.Allocate, qui retourne une instance de la BufferedGraphics classe.You can use an instance of the BufferedGraphicsContext class to create graphics buffers by calling the BufferedGraphicsContext.Allocate, which returns an instance of the BufferedGraphics class. Un BufferedGraphics objet gère une mémoire tampon qui est associée à une surface de rendu, comme un formulaire ou contrôle.A BufferedGraphics object manages a memory buffer that is associated with a rendering surface, such as a form or control.

Une fois qu’il est instancié, le BufferedGraphics classe gère le rendu dans une mémoire tampon de graphiques d’en mémoire.After it is instantiated, the BufferedGraphics class manages rendering to an in-memory graphics buffer. Vous pouvez rendre des graphiques dans la mémoire tampon par le biais du Graphics, qui expose un Graphics objet qui représente directement la mémoire tampon.You can render graphics to the memory buffer through the Graphics, which exposes a Graphics object that directly represents the memory buffer. Vous pouvez peindre sur cet Graphics de l’objet comme vous le feriez pour un Graphics objet qui représente une surface de dessin.You can paint to this Graphics object just as you would to a Graphics object that represents a drawing surface. Une fois que tous les graphiques sont dessinés dans la mémoire tampon, vous pouvez utiliser le BufferedGraphics.Render pour copier le contenu de la mémoire tampon vers la surface de dessin sur l’écran.After all the graphics have been drawn to the buffer, you can use the BufferedGraphics.Render to copy the contents of the buffer to the drawing surface on the screen.

Pour plus d’informations sur l’utilisation de la BufferedGraphics de classe, consultez manuellement de rendu des graphiques mis en mémoire tampon.For more information on using the BufferedGraphics class, see Manually Rendering Buffered Graphics. Pour plus d’informations sur le rendu de graphiques, consultez Graphiques et dessins dans Windows FormsFor more information on rendering graphics, see Graphics and Drawing in Windows Forms

Voir aussiSee also