Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al animar un gráfico simple, los usuarios a veces pueden encontrar parpadeo u otros efectos visuales no deseados. Una manera de limitar este problema es usar un proceso de "bitblt" en el gráfico. Bitblt es la "transferencia de bloques de bits" de los datos de color de un rectángulo de origen de píxeles a un rectángulo de destino de píxeles.
Con Windows Forms, bitblt se realiza mediante el método CopyFromScreen de la clase Graphics. En los parámetros del método, especifique el origen y el destino (como puntos), el tamaño del área que se va a copiar y el objeto gráfico usado para dibujar la nueva forma.
En el ejemplo siguiente, se dibuja una forma en el formulario en su Paint controlador de eventos. A continuación, el CopyFromScreen método se usa para duplicar la forma.
Nota:
Establecer la propiedad del DoubleBuffered formulario en true
hará que el código basado en gráficos en el evento Paint tenga doble búfer. Aunque esto no tendrá mejoras de rendimiento perceptibles al usar el código siguiente, es algo que se debe tener en cuenta al trabajar con código de manipulación de gráficos más complejo.
Ejemplo
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));
}
Compilar el código
El código anterior se ejecuta en el controlador de eventos del Paint formulario para que los gráficos persistan cuando se vuelva a dibujar el formulario. Por lo tanto, no llame a métodos relacionados con gráficos en el Load controlador de eventos, ya que el contenido dibujado no se volverá a dibujar si otro formulario cambia de tamaño o oculta el formulario.
Consulte también
.NET Desktop feedback