Substituindo o método OnPaint
As etapas básicas para substituir qualquer evento definido no .NET Framework são idênticas e são resumidas na lista a seguir.
Substituir um evento herdado
Substituir o método
On
EventName protegido.Chame o método
On
EventName da classe base do métodoOn
EventName substituído, de modo que delegados registrados recebam o evento.
O Paint evento é discutido em detalhes aqui porque cada controle do Windows Forms deve substituir o Paint evento que ele herda do Control. A classe base Control não sabe como um controle derivado precisa ser desenhado e não fornece nenhuma lógica de pintura no OnPaint método. O OnPaint método de simplesmente despacha o Paint evento para receptores de Control eventos registrados.
Se você trabalhou com o exemplo em Como: Desenvolver um controle simples do Windows Forms, você viu um exemplo de substituição do OnPaint método. O fragmento de código a seguir é retirado 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);
}
}
A PaintEventArgs classe contém dados para o Paint 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 a ser pintado e a propriedade refere-se a Graphics um Graphics objeto. As classes no System.Drawing namespace são classes gerenciadas que fornecem acesso à funcionalidade do GDI+, a nova biblioteca de gráficos do Windows. O Graphics objeto tem métodos para desenhar pontos, cadeias de caracteres, linhas, arcos, elipses e muitas outras formas.
Um controle invoca seu OnPaint método sempre que precisa alterar sua exibição visual. Esse método, por sua vez, gera o Paint evento.
Confira também
.NET Desktop feedback