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
Přepište chráněnou
On
metodu EventName .Volejte metodu
On
EventName základní třídy z přepsánéOn
metody 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é
.NET Desktop feedback