Sobrescrevendo 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.
Para substituir um evento herdado
Sobreponha o método protegido
On
EventName.Chame o método
On
EventName da classe base a partir do método substituídoOn
EventName para que os delegados registrados recebam o evento.
O evento Paint é discutido em detalhes aqui porque cada controle do Windows Forms deve substituir o evento Paint que herda de Control. A classe base Control não tem conhecimento de como um controle derivado deve ser desenhado e não fornece lógica alguma para pintura no método OnPaint. O método OnPaint de Control simplesmente envia o evento Paint para receptores de eventos registrados.
Se você trabalhou no exemplo em Como: Desenvolver um Controle Simples do Windows Forms, você viu um exemplo de como substituir o método OnPaint. O fragmento de código a seguir é extraído 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 classe PaintEventArgs contém dados para o evento Paint. 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 Graphics refere-se a um objeto Graphics. As classes no namespace System.Drawing são classes gerenciadas que fornecem acesso à funcionalidade do GDI+, a nova biblioteca de elementos gráficos do Windows. O objeto Graphics tem métodos para desenhar pontos, strings, linhas, arcos, elipses e muitas outras formas geométricas.
Um controle invoca seu método OnPaint sempre que precisa alterar sua exibição visual. Esse método, por sua vez, gera o evento Paint.
Consulte também
.NET Desktop feedback