Substitution de la méthode OnPaint

Les étapes de base pour remplacer tout événement défini dans le .NET Framework sont identiques et sont résumées dans la liste suivante.

Pour remplacer un événement hérité

  1. Remplacez la méthode EventName protégéeOn.

  2. Appelez la Onméthode EventName de la classe de base à partir de la méthode EventName substituéeOn, afin que les délégués inscrits reçoivent l’événement.

L’événement Paint est abordé en détail ici, car chaque contrôle Windows Forms doit remplacer l’événement Paint dont il hérite Control. La classe de base Control ne sait pas comment un contrôle dérivé doit être dessiné et ne fournit aucune logique de peinture dans la OnPaint méthode. La OnPaint méthode de répartition simple de Control l’événement Paint vers les récepteurs d’événements inscrits.

Si vous avez utilisé l’exemple dans How to : Develop a Simple Windows Forms Control, vous avez vu un exemple de substitution de la OnPaint méthode. Le fragment de code suivant est extrait de cet exemple.

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

La PaintEventArgs classe contient des données pour l’événement Paint . Il a deux propriétés, comme indiqué dans le code suivant.

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 est le rectangle à peindre et la Graphics propriété fait référence à un Graphics objet. Les classes de l’espace System.Drawing de noms sont des classes managées qui fournissent l’accès aux fonctionnalités de GDI+, la nouvelle bibliothèque graphique Windows. L’objet Graphics a des méthodes pour dessiner des points, des chaînes, des lignes, des arcs, des points de suspension et de nombreuses autres formes.

Un contrôle appelle sa OnPaint méthode chaque fois qu’il doit modifier son affichage visuel. Cette méthode déclenche à son tour l’événement Paint .

Voir aussi