Gráficos de doble búferDouble Buffered Graphics

El parpadeo es un problema frecuente al programar gráficos.Flicker is a common problem when programming graphics. Las operaciones gráficas que requieren varias operaciones de pintura complejas pueden hacer que las imágenes representadas parezcan parpadear o tengan un aspecto de algún modo inaceptable.Graphics operations that require multiple complex painting operations can cause the rendered images to appear to flicker or have an otherwise unacceptable appearance. Para resolver estos problemas, .NET Framework proporciona acceso al almacenamiento en doble búfer.To address these problems, the .NET Framework provides access to double buffering.

El almacenamiento en doble búfer usa un búfer de memoria para solucionar los problemas de parpadeo asociados a varias operaciones de pintura.Double buffering uses a memory buffer to address the flicker problems associated with multiple paint operations. Cuando se habilita el almacenamiento en doble búfer, todas las operaciones de pintura se representan primero en un búfer de memoria en lugar de la superficie de dibujo en la pantalla.When double buffering is enabled, all paint operations are first rendered to a memory buffer instead of the drawing surface on the screen. Una vez completadas todas las operaciones de pintura, el búfer de memoria se copia directamente en la superficie de dibujo asociada a él.After all paint operations are completed, the memory buffer is copied directly to the drawing surface associated with it. Como solo se realiza una única operación gráfica en la pantalla, se elimina el parpadeo de las imágenes asociado a las operaciones de pintura complejas.Because only one graphics operation is performed on the screen, the image flickering associated with complex painting operations is eliminated.

Almacenamiento en doble búfer predeterminadoDefault Double Buffering

La manera más fácil de usar el almacenamiento en doble búfer en la aplicación consiste en usar el almacenamiento en doble búfer predeterminado para formularios y controles que ofrece .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. Se puede habilitar doble búfer predeterminado para los formularios Windows Forms y controles de Windows de creados mediante el establecimiento la DoubleBuffered propiedad true o mediante el SetStyle método.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. Para obtener más información, vea Cómo: Reducir el parpadeo de gráficos con un búfer doble en formularios y controles.For more information, see How to: Reduce Graphics Flicker with Double Buffering for Forms and Controls.

Administración manual de gráficos almacenados en búferManually Managing Buffered Graphics

En el caso de escenarios de almacenamiento en doble búfer más avanzados, como animación y administración avanzada de memoria, puede usar las clases de .NET Framework para implementar su propia lógica de almacenamiento en doble búfer.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 clase responsable de asignar y administrar búferes de gráficos individuales es el BufferedGraphicsContext clase.The class responsible for allocating and managing individual graphics buffers is the BufferedGraphicsContext class. Cada dominio de aplicación tiene su propio valor predeterminado BufferedGraphicsContext instancia que administra todo el doble búfer predeterminado para esa aplicación.Every application domain has its own default BufferedGraphicsContext instance that manages all of the default double buffering for that application. En la mayoría de los casos habrá un único dominio de aplicación por aplicación, por lo que generalmente es un valor predeterminado BufferedGraphicsContext por aplicación.In most cases there will be only one application domain per application, so there is generally one default BufferedGraphicsContext per application. Default BufferedGraphicsContext instancias administradas por el BufferedGraphicsManager clase.Default BufferedGraphicsContext instances are managed by the BufferedGraphicsManager class. Puede recuperar una referencia al valor predeterminado BufferedGraphicsContext instancia mediante una llamada a la Current.You can retrieve a reference to the default BufferedGraphicsContext instance by calling the Current. También puede crear una dedicado BufferedGraphicsContext instancia, lo que puede mejorar el rendimiento de aplicaciones intensivas gráficamente.You can also create a dedicated BufferedGraphicsContext instance, which can improve performance for graphically intensive applications. Para obtener información sobre cómo crear un BufferedGraphicsContext la instancia, vea Cómo: Administrar manualmente gráficos almacenados en búfer.For information on how to create a BufferedGraphicsContext instance, see How to: Manually Manage Buffered Graphics.

Presentación manual de gráficos almacenados en búferManually Displaying Buffered Graphics

Puede usar una instancia de la BufferedGraphicsContext clase para crear búferes de gráficos mediante una llamada a la BufferedGraphicsContext.Allocate, que devuelve una instancia de la BufferedGraphics clase.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 objeto administra un búfer de memoria que está asociado con una superficie de representación, como un formulario o control.A BufferedGraphics object manages a memory buffer that is associated with a rendering surface, such as a form or control.

Una vez que se crea una instancia, el BufferedGraphics clase administra la representación en un búfer de gráficos en memoria.After it is instantiated, the BufferedGraphics class manages rendering to an in-memory graphics buffer. Se puede representar gráficos en el búfer de memoria a través de la Graphics, que expone un Graphics objeto que representa directamente el búfer de memoria.You can render graphics to the memory buffer through the Graphics, which exposes a Graphics object that directly represents the memory buffer. Puede pintar en esto Graphics objeto tal como lo haría para un Graphics objeto que representa una superficie de dibujo.You can paint to this Graphics object just as you would to a Graphics object that represents a drawing surface. Después de han dibujado todos los gráficos en el búfer, puede usar el BufferedGraphics.Render para copiar el contenido del búfer en la superficie de dibujo en la pantalla.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.

Para obtener más información sobre el uso de la BufferedGraphics de clases, vea manualmente representación Buffered Graphics.For more information on using the BufferedGraphics class, see Manually Rendering Buffered Graphics. Para más información sobre la representación de gráficos, vea Gráficos y dibujos en Windows FormsFor more information on rendering graphics, see Graphics and Drawing in Windows Forms

Vea tambiénSee also