Share via


Override del metodo OnPaint

Aggiornamento: novembre 2007

I passaggi di base per eseguire l'override di qualsiasi evento definito in .NET Framework sono identici e vengono esposti di seguito.

Per eseguire l'override di un evento ereditato

  1. Eseguire l'override del metodo OnNomeEvento protetto.

  2. Chiamare il metodo OnNomeEvento della classe di base dal metodo OnNomeEvento di cui è stato eseguito l'override, in modo che l'evento venga ricevuto dai delegati registrati.

L'evento Paint è illustrato nei dettagli in questa sede perché è necessario che tutti i controlli di Windows Form eseguano l'override dell'evento Paint ereditato dalla classe Control. La classe base Control non contiene le informazioni necessarie per il disegno dei controlli derivati e il relativo metodo OnPaint non fornisce alcuna logica di disegno. Il metodo OnPaint della classe Control non fa che inviare l'evento Paint ai riceventi di eventi registrati.

Se si è esaminato l'esempio esposto in Procedura: sviluppare un controllo di Windows Form semplice, si è avuto modo di vedere un esempio di override del metodo OnPaint. Il codice che segue è tratto da tale esempio.

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 classe PaintEventArgs contiene i dati dell'evento Paint. Presenta due proprietà, come illustrato nel seguente codice.

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 proprietà ClipRectangle è il rettangolo da disegnare, mentre la proprietà Graphics fa riferimento a un oggetto Graphics. Le classi dello spazio dei nomi System.Drawing sono classi gestite che consentono l'accesso alle funzionalità di GDI+, la nuova libreria grafica di Windows. L'oggetto Graphics presenta metodi per il disegno di punti, linee, archi, ellissi e numerose altre forme.

Un controllo richiama il proprio metodo OnPaint ogni volta che è necessario modificare l'aspetto del controllo stesso. Questo metodo genera a sua volta l'evento Paint.

Vedere anche

Concetti

Rendering di un controllo Windows Form

Definizione di un evento nei controlli Windows Form

Altre risorse

Gestione e generazione di eventi