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
Substituir o protegido OnEventName método.
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