Partilhar via


Duplo em buffer gráficos

Tremulação é um problema comum ao se programar elementos gráficos. Elementos gráficos operações que requerem várias operações complexas de pintura podem fazer com que as imagens processadas sejam exibidas piscando ou com uma aparência inaceitável. Para resolver esses problemas, o.NET Framework fornece acesso para o buffer duplo.

Buffer duplo usa um buffer de memória para resolver os problemas de oscilação associados a várias operações de pintura. Quando o buffer duplo está habilitado, todas as operações de pintura são processadas primeiro um buffer de memória em vez da superfície de desenho na tela. Depois que todas as operações de pintura são concluídas, o buffer de memória é copiado diretamente para a superfície de desenho associada a ele. Porque gráficos de apenas uma operação na tela, a oscilação de imagem associados às operações de pintura complexa é eliminada.

Padrão de buffer duplo

A maneira mais fácil de usar buffer duplo em seus aplicativos é usar o padrão duplas de armazenamento em buffer para formulários e controles é fornecida pelo.NET Framework. Você pode ativar padrão dupla de armazenamento em buffer para o Windows Forms e autoria de controles do Windows, definindo a DoubleBuffered propriedade para true ou usando o SetStyle método. Para obter mais informações, consulte Como: Reduza a cintilação de elementos gráficos com o buffer duplo para formulários e controles.

Gerenciando manualmente os gráficos em buffer

Para cenários de buffer duplos mais avançados, como, por exemplo, animação ou gerenciamento de memória avançada, você pode usar o.Classes do NET Framework para implementar sua própria lógica de buffer duplo. A classe responsável por alocar e gerenciar os buffers de gráficos individuais é o BufferedGraphicsContext classe. Cada domínio de aplicativo possui seu próprio padrão BufferedGraphicsContext o buffer de instância que gerencia todos os duplas padrão para esse aplicativo. Na maioria dos casos haverá apenas um domínio de aplicativo por aplicativo, portanto, geralmente é um padrão BufferedGraphicsContext por aplicativo. Padrão BufferedGraphicsContext instâncias são gerenciadas pela BufferedGraphicsManager classe. Você pode recuperar uma referência para o padrão BufferedGraphicsContext instância chamando o A propriedade de BufferedGraphicsManager.Current. Você também pode criar um dedicado BufferedGraphicsContext instância, que pode melhorar o desempenho para aplicativos que usam gráficos pesados. Para obter informações sobre como criar um BufferedGraphicsContext de instância, consulte Como: Gerenciar manualmente no buffer de elementos gráficos.

Exibindo em buffer gráficos manualmente

Você pode usar uma instância da BufferedGraphicsContext classe para criar os buffers de elementos gráficos, chamando o BufferedGraphicsContext.Allocate método, que retorna uma instância da BufferedGraphics classe. A BufferedGraphics objeto gerencia um buffer de memória que está associado uma superfície de processamento, como um formulário ou controle.

Depois que ela é instanciada, o BufferedGraphics classe gerencia o processamento para um buffer de memória de gráficos. Você pode processar os elementos gráficos para o buffer de memória por meio de BufferedGraphics.Graphics de propriedade, que expõe um Graphics objeto diretamente que representa o buffer de memória. Você pode pintar a esta Graphics de objeto como faria para um Graphics objeto que representa uma superfície de desenho. Depois que todos os elementos gráficos foram emitidos para o buffer, você pode usar o O método de BufferedGraphics.Render para copiar o conteúdo do buffer para a superfície de desenho na tela.

Para obter mais informações sobre como usar o BufferedGraphics da classe, consulte Manualmente processamento Buffered gráficos. Para obter mais informações sobre o processamento de gráficos, consulteElementos gráficos e desenho em formulários do Windows

Consulte também

Tarefas

Como: Processar manualmente os gráficos em buffer

Como: Reduza a cintilação de elementos gráficos com o buffer duplo para formulários e controles

Como: Gerenciar manualmente no buffer de elementos gráficos

Referência

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

Outros recursos

Elementos gráficos e desenho em formulários do Windows