Compartir a través de


Reemplazar el método OnPaint

Actualización: noviembre 2007

Los pasos básicos para reemplazar un evento definido en .NET Framework son los mismos y se resumen en la siguiente lista.

Para reemplazar un evento heredado

  1. Invalide el método protegido OnnombreDeEvento.

  2. Llame al método OnnombreDeEvento de la clase base desde el método invalidado OnnombreDeEvento, para que los delegados registrados reciban el evento.

El evento Paint se explica aquí en detalle dado que cada control de formularios Windows Forms debe reemplazar el evento Paint que hereda de Control. La clase base Control no sabe cómo debe dibujarse un control derivado y no proporciona una lógica de representación en el método OnPaint. El método OnPaint de Control se limita a enviar el evento Paint a los receptores de elemento registrados.

Si ha realizado el ejemplo de Cómo: Desarrollar un control de formularios Windows Forms sencillo, ha podido ver un ejemplo de cómo reemplazar el método OnPaint. El fragmento de código siguiente está tomado de dicho ejemplo.

Public Class FirstControl
   Inherits Control
   
   Public Sub New()
   End Sub
   
   Protected Overrides Sub OnPaint(e As PaintEventArgs)
      ' Call the OnPaint method of the base class.
      MyBase.OnPaint(e)
      ' Call methods of the System.Drawing.Graphics object.
      e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), RectangleF.op_Implicit(ClientRectangle))
   End Sub
End Class 
public class FirstControl : Control{
   public FirstControl() {}
   protected override void OnPaint(PaintEventArgs e) {
      // Call the OnPaint method of the base class.
      base.OnPaint(e);
      // Call methods of the System.Drawing.Graphics object.
      e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle);
   } 
} 

La clase PaintEventArgs contiene datos del evento Paint. Posee dos propiedades, como se muestra en el código siguiente.

Public Class PaintEventArgs
   Inherits EventArgs
   ...
   Public ReadOnly Property ClipRectangle() As System.Drawing.Rectangle
      ...
   End Property
   
   Public ReadOnly Property Graphics() As System.Drawing.Graphics
      ...
   End Property 
   ...
End Class
public class PaintEventArgs : EventArgs {
...
    public System.Drawing.Rectangle ClipRectangle {}
    public System.Drawing.Graphics Graphics {}
...
}

La propiedad ClipRectangle es el rectángulo que se va a representar y la propiedad Graphics hace referencia a un objeto Graphics. Las clases del espacio de nombres System.Drawing son clases administradas que proporcionan acceso a la funcionalidad de GDI+, la nueva biblioteca gráfica de Windows. El objeto Graphics dispone de métodos para dibujar puntos, cadenas, líneas, arcos, elipses y muchas otras formas.

Un control invoca su método OnPaint cuando necesita cambiar su apariencia visual. Este método provoca a su vez el evento Paint.

Vea también

Conceptos

Representar un control de formularios Windows Forms

Definir un evento en los controles de formularios Windows Forms

Otros recursos

Controlar y provocar eventos