Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você anima um gráfico simples, os usuários podem, às vezes, encontrar cintilação ou outros efeitos visuais indesejáveis. Uma maneira de limitar esse problema é usar um processo "bitblt" no gráfico. Transferência de bits é a "transferência de blocos de bit" dos dados de cor de um retângulo de pixels de origem para um retângulo de pixels de destino.
Com o Windows Forms, a transferência de bits é realizada 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 a seguir, uma forma é desenhada no formulário no manipulador de eventos Paint dele. 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 gráficos no evento Paint seja em buffer duplo. Embora isso não tenha ganhos de desempenho perceptíveis ao usar o código abaixo, é algo a ter em mente ao trabalhar com um código de manipulação de elementos 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 elementos gráficos persistam quando o formulário é redesenhado. Dessa forma, não chame métodos relacionados a elementos gráficos no manipulador de eventos Load, pois o conteúdo desenhado não será redesenhado se o formulário for redimensionado ou obscurecido por outro formulário.
Consulte também
.NET Desktop feedback