Procedimiento para reducir el parpadeo de los gráficos con un búfer doble en formularios y controles

El almacenamiento en doble búfer usa un búfer de memoria para solucionar los problemas de parpadeo asociados a varias operaciones de pintura. 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. Una vez completadas todas las operaciones de pintura, el búfer de memoria se copia directamente en la superficie de dibujo asociada a él. Dado que solo se realiza una operación de gráficos en la pantalla, se elimina el parpadeo de imagen asociado a las operaciones de pintura complejas. Para la mayoría de las aplicaciones, el almacenamiento de doble búfer predeterminado que proporciona .NET Framework ofrecerá los mejores resultados. Los controles de Windows Forms estándar se almacenan en doble búfer de forma predeterminada. Puede habilitar el almacenamiento de doble búfer predeterminado en los formularios y los controles creados de dos maneras. Puede establecer la propiedad DoubleBuffered en true, o bien puede llamar al método SetStyle para establecer la marca OptimizedDoubleBuffer en true. Ambos métodos habilitarán el almacenamiento de doble búfer predeterminado para el formulario o control y proporcionarán una representación gráfica sin parpadeo. Solo se recomienda llamar al método SetStyle para los controles personalizados para los que haya escrito todo el código de representación.

En el caso de escenarios de almacenamiento de doble búfer más avanzados, como animación y administración avanzada de memoria, puede implementar su propia lógica de almacenamiento de doble búfer. Para obtener más información, consulte Procedimiento para administrar manualmente gráficos almacenados en búfer.

Para reducir el parpadeo

  • Establezca la propiedad DoubleBuffered en true.

    DoubleBuffered = true;
    
    DoubleBuffered = True
    
    

O bien

  • Llame al método SetStyle para establecer la marca OptimizedDoubleBuffer en true.

    SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
    
    SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    
    

Consulte también