Partager via


Remplacement 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 protégée OnEventName.

  2. Appelez la méthode OnEventName de la classe de base à partir de la méthode OnEventName remplacée, de manière à ce 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 qu’il hérite de 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 méthode OnPaint. La méthode OnPaint de Control distribue simplement l’événement Paint aux récepteurs d’événements inscrits.

Si vous avez travaillé sur l’exemple dans Aide et Astuces : développer un contrôle Windows Forms simple, vous avez vu un exemple de remplacement de la méthode OnPaint. 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 classe PaintEventArgs 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 propriété Graphics fait référence à un objet Graphics. Les classes de l’espace de noms System.Drawing 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 méthode OnPaint chaque fois qu’il doit modifier son affichage visuel. Cette méthode déclenche à son tour l’événement Paint.

Voir aussi