Condividi tramite


Override 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 eseguire l'override di un evento ereditato

  1. Eseguire l'override del metodo EventName protettoOn.

  2. Chiamare il Onmetodo EventName della classe base dal metodo EventName sottoposto Ona override, in modo che i delegati registrati ricevano l'evento.

L'evento Paint viene descritto in dettaglio qui perché ogni controllo Windows Form deve eseguire l'override dell'evento Paint che eredita da Control. La classe base Control non conosce il modo in cui un controllo derivato deve essere disegnato e non fornisce alcuna logica di disegno nel OnPaint metodo . Il OnPaint metodo di Control invia semplicemente l'evento Paint ai ricevitori di eventi registrati.

Se è stato eseguito l'esempio in Procedura: Sviluppare un controllo Windows Form semplice, è stato illustrato un esempio di override del OnPaint metodo. 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 PaintEventArgs classe 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 Graphics proprietà fa riferimento a un Graphics oggetto . Le classi nello spazio dei System.Drawing nomi 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 OnPaint relativo metodo ogni volta che deve modificare la visualizzazione visiva. Questo metodo genera a sua volta l'evento Paint .

Vedi anche