Přepsání metody OnPaint

Základní kroky pro přepsání všech událostí definovaných v rozhraní .NET Framework jsou identické a jsou shrnuty v následujícím seznamu.

Přepsání zděděné události

  1. Přepište chráněnou Onmetodu EventName .

  2. Volejte metodu OnEventName základní třídy z přepsáné Onmetody EventName , aby registrovaní delegáti obdrželi událost.

Událost Paint je zde podrobně popsána, protože každý model Windows Forms ovládací prvek musí přepsat Paint událost, ze které dědí .Control Základní Control třída neví, jak je třeba nakreslit odvozený ovládací prvek a neposkytuje žádnou logiku OnPaint malování v metodě. OnPaint Metoda Control jednoduše odešle Paint událost registrovaným příjemcům událostí.

Pokud jste si prošli ukázku v části Postupy: Vývoj jednoduchého ovládacího prvku model Windows Forms, viděli jste příklad přepsání OnPaint metody. Následující fragment kódu je převzat z této ukázky.

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

Třída PaintEventArgs obsahuje data pro Paint událost. Má dvě vlastnosti, jak je znázorněno v následujícím kódu.

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 je obdélník, který má být malován, a Graphics vlastnost odkazuje na Graphics objekt. Třídy v System.Drawing oboru názvů jsou spravované třídy, které poskytují přístup k funkcím GDI+, nové grafické knihovny Systému Windows. Objekt Graphics má metody kreslení bodů, řetězců, čar, oblouků, elips a mnoha dalších obrazců.

Ovládací prvek vyvolá svou OnPaint metodu pokaždé, když potřebuje změnit jeho vizuální zobrazení. Tato metoda zase vyvolá Paint událost.

Viz také