Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Quando você anima um gráfico simples, os usuários às vezes podem encontrar cintilação ou outros efeitos visuais indesejáveis. Uma maneira de limitar esse problema é usar um processo "bitblt" no gráfico. Bitblt é a "transferência de bloco de bits" dos dados de cor de um retângulo de origem de pixels para um retângulo de destino de pixels.
Com o Windows Forms, o bitblt é realizado usando o método CopyFromScreen da classe Graphics. Nos parâmetros do método, você especifica a origem e o destino (como pontos), o tamanho da área a ser copiada e o objeto gráfico usado para desenhar a nova forma.
No exemplo abaixo, uma forma é desenhada no formulário em seu manipulador de eventos Paint. Em seguida, o método CopyFromScreen é usado para duplicar a forma.
Observação
Definir a propriedade DoubleBuffered do formulário como true fará com que o código baseado em elementos gráficos no evento Paint tenha buffer duplo. Embora isso não tenha nenhum ganho de desempenho percetível ao usar o código abaixo, é algo a ter em mente ao trabalhar com código de manipulação de gráficos mais complexo.
Exemplo
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a circle with a bar on top.
e.Graphics.FillEllipse(Brushes.DarkBlue, New Rectangle _
(10, 10, 60, 60))
e.Graphics.FillRectangle(Brushes.Khaki, New Rectangle _
(20, 30, 60, 10))
' Copy the graphic to a new location.
e.Graphics.CopyFromScreen(New Point(10, 10), New Point _
(100, 100), New Size(70, 70))
End Sub
private void Form1_Paint(System.Object sender,
System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.DarkBlue, new
Rectangle(10,10,60,60));
e.Graphics.FillRectangle(Brushes.Khaki, new
Rectangle(20,30,60,10));
e.Graphics.CopyFromScreen(new Point(10, 10), new Point(100, 100),
new Size(70, 70));
}
Compilando o código
O código acima é executado no manipulador de eventos Paint do formulário para que os gráficos persistam quando o formulário for redesenhado. Como tal, não chame métodos relacionados a gráficos no manipulador de eventos Load, porque o conteúdo desenhado não será redesenhado se o formulário for redimensionado ou obscurecido por outro formulário.
Ver também
.NET Desktop feedback