Compartilhar via


Duplo em buffer Graphics

Tremulação é um problema comum quando 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 endereço esses problemas, o .NET estrutura fornece acesso a buffer duplo.

Buffer duplo utiliza 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 de superfície de desenho na tela.Depois de 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.Como elementos gráficos somente uma operação é executada na tela, a oscilação de imagem associados às operações complexas de pintura é 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 estrutura.Você pode ativar padrão dupla de armazenamento em buffer para o Windows Forms e autor de controles do Windows, definindo o DoubleBuffered propriedade para true ou usando o SetStyle método. Para obter mais informações, consulte Como: Reduzir oscilação Graphics com buffer duplo para formulários e controles.

Gerenciando manualmente Graphics no buffer

Para mais avançados cenários buffer duplos, sistema autônomo animação ou gerenciamento de memória avançada, você pode usar classes do .NET estrutura para implementar sua própria lógica de buffer duplo.A classe responsável por alocar e gerenciar os buffers de elementos gráficos individuais é o BufferedGraphicsContext classe. Cada domínio do aplicativo possui seu próprio padrão BufferedGraphicsContext instância que gerencia todos os padrão dupla de armazenamento em buffer para o aplicativo. Na maioria dos casos haverá apenas um domínio do aplicativo por aplicativo, há geralmente um padrão de BufferedGraphicsContext por aplicativo. Padrão de BufferedGraphicsContext instâncias são gerenciadas pela BufferedGraphicsManager classe. Você pode recuperar uma referência para o padrão de BufferedGraphicsContext instância chamando o Propriedade BufferedGraphicsManager.corrente.Você também pode criar um dedicado BufferedGraphicsContext instância pode melhorar o desempenho de aplicativos com uso intenso graficamente. Para obter informações sobre como criar um BufferedGraphicsContext instância, consulte Como: Gerenciar manualmente Graphics no buffer.

Exibindo em buffer gráficos manualmente

Você pode usar uma instância do BufferedGraphicsContext classe para criar os buffers de elementos gráficos, chamando o Método BufferedGraphicsContext.alocar, que retorna uma instância do BufferedGraphics classe. A BufferedGraphics objeto gerencia um buffer de memória que está associado uma superfície de renderização, sistema autônomo um formulário ou controle.

Depois que ele é instanciado, a BufferedGraphics classe gerencia renderização em um buffer de memória gráfica. Você pode processar elementos gráficos para o buffer de memória por meio de Propriedade BufferedGraphics.Graphics, que expõe um Graphics objeto que representa o buffer de memória diretamente. Você pode pintar este Graphics objeto exatamente sistema autônomo faria para um Graphics objeto representando uma superfície de desenho. Depois de todos os elementos gráficos foram emitidos para o buffer, você pode usar o Método BufferedGraphics.Render para copiar o Sumário do buffer para a superfície de desenho na tela.

Para obter mais informações sobre como usar o BufferedGraphics classe, consulte Gráficos com buffer de renderização manualmente.Para obter mais informações sobre renderização de gráficos, consulte Elementos gráficos e desenho em formulários do Windows

Consulte também

Tarefas

Como: Processar gráficos armazenados em buffer manualmente

Como: Reduzir oscilação Graphics com buffer duplo para formulários e controles

Como: Gerenciar manualmente Graphics no buffer

Referência

BufferedGraphics

BufferedGraphicsContext

BufferedGraphicsManager

Outros recursos

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