Substituindo o método OnPaint

As etapas básicas para a substituição de qualquer evento definido no .NET Framework são idênticos e estão resumidas na seguinte lista.

Para substituir um evento herdado

  1. Substituir o protegido OnEventName método.

  2. Chamar o OnEventName método da classe base do substituído OnEventName método, de forma que registrado delegados receberão o evento.

O Paint evento é discutido em detalhes aqui, porque todos os controles Windows Forms devem substituir o Paint evento que ele herda de Control. Base da Control classe não sabe como um controle derivado deve ser desenhado e não fornece qualquer lógica de pintura na OnPaint método. O OnPaint o método de Control simplesmente despacha o Paint evento registrado receptores de evento.

Se você trabalhou por meio de amostra em Como: Desenvolver um controle de formulários do Windows simples, você viu um exemplo de substituir o OnPaint método. O fragmento de código a seguir é tirado desse exemplo.

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);
   } 
} 

O PaintEventArgs classe contém dados para o Paint de evento. Ele tem duas propriedades, conforme mostrado no código a seguir.

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é o retângulo para ser pintada e o Graphics propriedade se refere a uma Graphics objeto. As classes de System.Drawing namespace são gerenciados classes que fornecem acesso à funcionalidade do GDI+, o novo Windows graphics library. O Graphics objeto tem métodos para desenhar pontos, seqüências de caracteres, linhas, arcos, elipses e muitas outras formas.

Um controle chama sua OnPaint método sempre que precisar alterar sua exibição visual. Esse método por sua vez dispara o Paint de evento.

Consulte também

Conceitos

Processamento de um controle Windows Forms

A definição de um evento em controles do Windows Forms

Outros recursos

Tratamento e disparada de eventos