Compartilhar via


Como reduzir flicker de gráficos com buffer duplo para formulários e controles

O buffer duplo usa um buffer de memória para resolver os problemas de cintilação associados a várias operações de pintura. Quando o buffer duplo está habilitado, todas as operações de pintura são renderizadas pela primeira vez em um buffer de memória em vez da superfície de desenho na tela. Depois que todas as operações de pintura forem concluídas, o buffer de memória será copiado diretamente para a superfície de desenho associada a ele. Como apenas uma operação gráfica é executada na tela, a cintilação de imagem associada a operações complexas de pintura é eliminada. Para a maioria dos aplicativos, o buffer duplo padrão fornecido pelo .NET Framework fornecerá os melhores resultados. Os controles padrão do Windows Forms são armazenados em buffer duplo por padrão. Você pode habilitar o buffer duplo padrão em seus formulários e controles criados de duas maneiras. Você pode definir a DoubleBuffered propriedade como true, ou pode chamar o SetStyle método para definir o OptimizedDoubleBuffer sinalizador como true. Ambos os métodos habilitarão o buffer duplo padrão para seu formulário ou controle e fornecerão renderização de elementos gráficos sem cintilação. Chamar o SetStyle método é recomendado apenas para controles personalizados para os quais você escreveu todo o código de renderização.

Para cenários de buffer duplo mais avançados, como animação ou gerenciamento avançado de memória, você pode implementar sua própria lógica de buffer duplo. Para obter mais informações, consulte Como gerenciar manualmente gráficos em buffer.

Para reduzir a cintilação

  • Defina a propriedade DoubleBuffered como true.

    DoubleBuffered = true;
    
    DoubleBuffered = True
    
    

- ou -

  • Chame o SetStyle método para definir o OptimizedDoubleBuffer sinalizador como true.

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

Consulte também