Mengesampingkan Metode OnPaint
Langkah-langkah dasar untuk menimpa peristiwa apa pun yang ditentukan dalam .NET Framework identik dan dirangkum dalam daftar berikut.
Untuk mengambil alih peristiwa yang diwariskan
Ambil alih metode EventName yang dilindungi.
On
On
Panggil metode EventName dari kelas dasar dari metode EventName yang ditimpaOn
, sehingga delegasi terdaftar menerima peristiwa.
Acara Paint ini dibahas secara rinci di sini karena setiap kontrol Formulir Windows harus mengambil alih Paint peristiwa yang diwarisinya dari Control. Kelas dasar Control tidak tahu bagaimana kontrol turunan perlu digambar dan tidak menyediakan logika lukisan apa pun dalam metode .OnPaint Metode OnPaintControl hanya mengirimkan Paint peristiwa ke penerima peristiwa terdaftar.
Jika Anda bekerja melalui sampel dalam Cara: Mengembangkan Simple Formulir Windows Control, Anda telah melihat contoh mengambil alih OnPaint metode . Fragmen kode berikut diambil dari sampel tersebut.
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);
}
}
Kelas PaintEventArgs berisi data untuk peristiwa tersebut Paint . Ini memiliki dua properti, seperti yang ditunjukkan dalam kode berikut.
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 adalah persegi panjang yang akan dicat, dan Graphics properti mengacu pada Graphics objek. Kelas di System.Drawing namespace adalah kelas terkelola yang menyediakan akses ke fungsionalitas GDI+, pustaka grafis Windows baru. Objek Graphics memiliki metode untuk menggambar titik, string, garis, busur, elipsis, dan banyak bentuk lainnya.
Kontrol memanggil metodenya OnPaint setiap kali perlu mengubah tampilan visualnya. Metode ini pada gilirannya Paint meningkatkan peristiwa.
Baca juga
.NET Desktop feedback