Überschreiben der OnPaint-Methode

Die grundlegenden Schritte zum Überschreiben eines in .NET Framework definierten Ereignisses sind identisch und werden in der folgenden Liste zusammengefasst.

So überschreiben Sie ein geerbtes Ereignis

  1. Überschreiben Sie die geschützte OnEventName-Methode.

  2. Rufen Sie die OnEventName-Methode der Basisklasse über die überschriebene OnEventName-Methode auf, damit registrierte Delegaten das Ereignis empfangen.

Das Paint-Ereignis wird hier ausführlich erläutert, da jedes Windows Forms-Steuerelement das Paint-Ereignis überschreiben muss, das von Control geerbt wird. Die Control-Basisklasse weiß nicht, wie ein abgeleitetes Steuerelement gerendert werden muss, und stellt keine Zeichnungslogik in der OnPaint-Methode bereit. Die OnPaint-Methode von Control verteilt einfach das Paint-Ereignis an registrierte Ereignisempfänger.

Wenn Sie das Beispiel unter Vorgehensweise: Entwickeln eines einfachen Windows Forms-Steuerelements durchgearbeitet haben, haben Sie ein Beispiel zum Überschreiben der OnPaint-Methode gesehen. Das folgende Codefragment stammt aus diesem Beispiel:

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);  
   }
}

Die PaintEventArgs-Klasse enthält Daten für das Paint-Ereignis. Sie verfügt über zwei Eigenschaften, wie im folgenden Code dargestellt:

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 ist das Rechteck, das gezeichnet werden soll, und die Graphics-Eigenschaft verweist auf ein Graphics-Objekt. Die Klassen im System.Drawing-Namespace sind verwaltete Klassen, die Zugriff auf die Funktionalität von GDI+, der neuen Windows-Grafikbibliothek, bieten. Das Graphics-Objekt verfügt über Methoden zum Zeichnen von Punkten, Zeichenfolgen, Linien, Bögen, Ellipsen und vielen anderen Formen.

Ein Steuerelement ruft seine OnPaint-Methode auf, wenn die visuelle Anzeige geändert werden muss. Diese Methode löst wiederum das Paint-Ereignis aus.

Siehe auch