Sovrascrittura del metodo OnPaint
I passaggi di base per eseguire l'override di qualsiasi evento definito in .NET Framework sono identici e sono riepilogati nell'elenco seguente.
Per sovrascrivere un evento ereditato
Sovrascrivi il metodo protetto
On
EventName.Chiamare il metodo
On
EventName della classe base dal metodoOn
EventName sottoposto a override, in modo che i delegati registrati ricevano l'evento.
L'evento Paint viene descritto in dettaglio qui perché ogni controllo Windows Forms deve eseguire l'override dell'evento Paint che eredita da Control. La classe base Control non conosce il modo in cui deve essere disegnato un controllo derivato e non fornisce alcuna logica di disegno nel metodo OnPaint. Il metodo OnPaint di Control invia semplicemente l'evento Paint ai ricevitori di eventi registrati.
Se hai seguito l'esempio in Procedura: Sviluppare un controllo Windows Form semplice, hai visto un esempio di override del metodo OnPaint. Il frammento di codice seguente viene 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 dati per l'evento Paint. Ha due proprietà, come illustrato nel codice seguente.
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 {}
...
}
ClipRectangle è il rettangolo da disegnare e la proprietà Graphics fa riferimento a un oggetto Graphics. Le classi nello spazio dei nomi System.Drawing sono classi gestite che forniscono l'accesso alla funzionalità di GDI+, la nuova libreria grafica di Windows. L'oggetto Graphics dispone di metodi per disegnare punti, stringhe, linee, archi, ellissi e molte altre forme.
Un controllo richiama il relativo metodo OnPaint ogni volta che deve modificare la visualizzazione visiva. Questo metodo genera a sua volta l'evento Paint.
Vedere anche
.NET Desktop feedback