Переопределение метода OnPaint
Основные шаги по переопределении любого события, определенного в .NET Framework, идентичны и описаны в следующем списке.
Переопределение наследуемого события
Переопределите защищенный метод
On
EventName.Вызовите метод
On
EventName базового класса из переопределенного методаOn
EventName, чтобы зарегистрированные делегаты получали событие.
Здесь подробно рассматривается событие Paint, так как каждый элемент управления Windows Forms должен переопределить событие Paint, которое он наследует от Control. Базовый класс Control не знает, как должен быть нарисован производный элемент управления, и не предоставляет логику рисования в методе OnPaint. Метод OnPaintControl просто отправляет событие Paint зарегистрированным приемникам событий.
Если вы работали с примером в разделе Практическое руководство. Разработка простого элемента управления Windows Forms, вы видели пример переопределения метода OnPaint. Следующий фрагмент кода взят из этого примера.
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);
}
}
Класс PaintEventArgs содержит данные события Paint. Он имеет два свойства, как показано в следующем коде.
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 — это прямоугольник, который необходимо раскрасить, и свойство Graphics ссылается на объект Graphics. Классы в пространстве имен System.Drawing — это управляемые классы, обеспечивающие доступ к функциональным возможностям GDI+, новой библиотеке графики Windows. Объект Graphics содержит методы рисования точек, строк, линий, дуг, эллипсов и многих других фигур.
Элемент управления вызывает метод OnPaint всякий раз, когда ему нужно изменить визуальное отображение. Этот метод, в свою очередь, вызывает событие Paint.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по