Zastępowanie metody OnPaint
Podstawowe kroki zastępowania dowolnego zdarzenia zdefiniowanego w programie .NET Framework są identyczne i podsumowane na poniższej liście.
Aby zastąpić dziedziczone zdarzenie
Zastąpij chronioną
On
metodę EventName .Wywołaj metodę
On
EventName klasy bazowej z metody overriddenOn
EventName , aby zarejestrowani delegaci odbierali zdarzenie.
Zdarzenie Paint zostało szczegółowo omówione tutaj, ponieważ każda kontrolka Windows Forms musi zastąpić Paint zdarzenie dziedziczone z Controlelementu . Klasa bazowa Control nie wie, jak należy narysować kontrolkę pochodną i nie zapewnia żadnej logiki malowania w metodzie OnPaint . Metoda OnPaintControl po prostu wysyła Paint zdarzenie do zarejestrowanych odbiorników zdarzeń.
Jeśli przepracowaliśmy przykład w temacie Instrukcje: tworzenie prostej kontrolki Windows Forms, przedstawiono przykład zastępowania OnPaint metody. Poniższy fragment kodu jest pobierany z tego przykładu.
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);
}
}
Klasa PaintEventArgs zawiera dane zdarzenia Paint . Ma dwie właściwości, jak pokazano w poniższym kodzie.
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 to prostokąt do malowania, a Graphics właściwość odwołuje się do Graphics obiektu. Klasy w System.Drawing przestrzeni nazw to klasy zarządzane, które zapewniają dostęp do funkcji GDI+, nowej biblioteki grafiki systemu Windows. Obiekt Graphics ma metody rysowania punktów, ciągów, linii, łuków, wielokropka i wielu innych kształtów.
Kontrolka wywołuje metodę OnPaint za każdym razem, gdy musi zmienić jej wyświetlanie wizualizacji. Ta metoda z kolei zgłasza Paint zdarzenie.
Zobacz też
.NET Desktop feedback