Compartir a través de


Gráficos de doble búfer

El parpadeo es un problema común al programar los gráficos. Las operaciones de gráficos que requieren varias operaciones complejas de representación pueden hacer que las imágenes representadas parezcan parpadear o tener una apariencia poco aceptable. Para solucionar estos problemas, .NET Framework proporciona acceso al búfer doble.

El búfer doble utiliza un búfer de memoria para solucionar los problemas de parpadeo asociados a varias operaciones de representación. Cuando se habilita el doble búfer, todas las operaciones de representación se representan en primer lugar en un búfer de memoria en lugar de en la pantalla. Después de finalizar todas las operaciones de representación, el búfer de memoria se copia directamente en la superficie de representación asociada. Cómo sólo se realiza en la pantalla una operación de gráficos, se elimina el parpadeo de las imágenes asociado a las operaciones complejas de representación.

Búfer doble predeterminado

La forma más sencilla de utilizar el búfer doble en las aplicaciones consiste en utilizar el búfer doble predeterminado para los formularios y controles incluidos en .NET Framework. Se puede habilitar el búfer doble predeterminado en los formularios Windows Forms y en los controles creados de Windows estableciendo la propiedad DoubleBuffered en true o mediante el método SetStyle. Para obtener más información, vea Cómo: Reducir el parpadeo de los gráficos con un búfer doble en formularios y controles.

Administrar manualmente gráficos almacenados en búfer

En aquellos escenarios de doble búfer más avanzados, como animación o administración de memoria avanzada, se pueden utilizar las clases .NET Framework para implementar la lógica de doble búfer propia. La clase responsable de asignar y administrar búferes de gráficos individuales es la clase BufferedGraphicsContext. Cada dominio de aplicación cuenta con su propia instancia de BufferedGraphicsContext predeterminada que administra todos los búferes dobles predeterminados para esa aplicación. En la mayoría de los casos, habrá sólo un dominio de aplicación por aplicación, por tanto habrá por lo general un único BufferedGraphicsContext por aplicación. La clase BufferedGraphicsManager administra las instancias de BufferedGraphicsContext predeterminadas. Puede recuperar una referencia a la instancia de BufferedGraphicsContext predeterminada mediante la llamada a la propiedad BufferedGraphicsManager.Current. También puede crear una instancia dedicada de BufferedGraphicsContext, que mejora el rendimiento de las aplicaciones con un uso intensivo de gráficos. Para obtener más información sobre cómo crear una instancia BufferedGraphicsContext, vea Cómo: Administrar manualmente gráficos almacenados en búfer.

Mostrar manualmente gráficos almacenados en búfer

Se puede utilizar una instancia de la clase BufferedGraphicsContext para crear búferes de gráficos mediante la llamada al método BufferedGraphicsContext.Allocate, que devuelve una instancia de la clase BufferedGraphics. Los objetos BufferedGraphics administran un búfer de memoria asociado a la superficie de representación, como un formulario o un control.

Después de creada la instancia, la clase BufferedGraphics administra la representación a un búfer de gráficos residente en memoria. Se pueden representar gráficos en el búfer de memoria mediante la propiedad BufferedGraphics.Graphics, que expone un objeto Graphics que representa directamente el búfer de memoria. Puede pintar en este objeto Graphics al igual que en cualquier objeto que Graphics represente una superficie de dibujo. Después de que todos los gráficos se hayan dibujado en el búfer, utilice el método BufferedGraphics.Render para copiar el contenido del búfer en la superficie de dibujo en la pantalla.

Para obtener más información sobre el uso de la clase BufferedGraphics, vea Representar manualmente gráficos almacenados en búfer. Para obtener más información sobre la representación de gráficos, vea Gráficos y dibujos en Windows Forms

Vea también

Tareas

Cómo: Representar manualmente gráficos almacenados en búfer

Cómo: Reducir el parpadeo de los gráficos con un búfer doble en formularios y controles

Cómo: Administrar manualmente gráficos almacenados en búfer

Referencia

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

Otros recursos

Gráficos y dibujos en Windows Forms