Michel Perfetti
Introduction aux ToolStripRenderers
Le framework .net 2.0 fournit un mécanisme qui permet de dessiner soi-même les barres d'outils et de menu
Par Michel Perfetti publié le 25/08/2005 à 08:09, lu 7022 fois, 4 pages
 2 | Architecture
Téléchargez le code source - 97 Kb
Architecture
La classe de rendu ToolStripRenderer
Chaque objet ToolStrip possède une propriété Renderer qui prend en paramètre un objet ToolStripRenderer, c'est cette classe qui prend en charge tout l'affichage du ToolStrip :



Remarque : la classe affichée ici n'est pas complète, je n'ai affiché que les méthodes qui nous intéressent pour l'article.

Cet article est basé sur la Béta 2 de Visual Studio 2005, et comme toute béta, il manque des choses, dont une partie de la documentation de cette classe. Certaines méthodes, bien que la classe soit nouvelle, sont déjà marquées comme obsolètes! Par contre, les noms des méthodes sont assez clairs pour avoir une idée de ce qu'elles font.
Les différents composants à peindre
Quasiment toutes les méthodes de dessin fournissent un ToolStrip en paramètre. Il faut, de nous-même, distinguer les menu des barres d'outils, des menu déroulants etc. En fait les principaux types de ToolStrips à prendre en compte pour le design sont les suivants :
  • Le MenuStrip : la barre de menu
  • Le ContextMenuStrip : un menu contextuel
  • Le ToolStripDropDownMenu : pour dessiner les menus déroulants. D'ailleurs, ContextMenuStrip, hérite de ToolStripDropDropMenu.
  • Le StatusStrip : la barre de status, remplaçant de la statusbar
  • Le ToolStrip en général (cela peut être des barres d'outils, des boutons etc...
Le ToolStripRenderer fournit des méthodes assez génériques pour dessiner tous les types de ToolStrips. Il faut donc pour chaque méthode différencier les différents ToolStrips si l'on veut des rendus différents.

Il n'est pas toujours nécessaire de redéfinir toutes les méthodes, comme par exemple celle qui permettent d'afficher l'icône et le texte dans un bouton ou un menu. Cela permet aussi de construire son ToolStripRenderer petit à petit.
 
» Démarrer une discussion