Поделиться через


Переопределение метода OnPaint

Обновлен: Ноябрь 2007

Основные шаги для переопределения любого события, определенного в .NET Framework, идентичны и обобщены в следующем списке.

Переопределение наследуемого события

  1. Переопределите защищенный метод OnEventName.

  2. Вызовите метод OnEventName базового класса из переопределенного метода OnEventName, чтобы зарегистрированные делегаты получили событие.

Событие Paint описано здесь подробно, так как каждый элемент управления Windows Forms должен переопределять событие Paint, наследуемое им от класса Control. В базовом классе Control не содержатся сведения о способе отображения производного элемента управления и какой-либо логике рисования в методе OnPaint. Метод OnPaint класса Control лишь отправляет событие Paint зарегистрированным получателям событий.

Пример переопределения метода OnPaint представлен в разделе Руководство: Разработка простого элемента управления форм Windows Forms. Следующий фрагмент кода взят из этого образца.

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.

См. также

Основные понятия

Визуализация элементов управления Windows Forms

Определение событий в элементах управления Windows Forms

Другие ресурсы

Обработка и вызов событий