Icônes et images dans Wisej.NET
Une interface se juge aussi à ses icônes : celles qui restent nettes sur un écran haute densité, qui suivent le thème actif et que l’équipe sait retrouver six mois plus tard. Wisej.NET propose délibérément plusieurs manières de poser une image sur un contrôle, et toutes fonctionnent ; l’ennui commence quand une même application les mélange par accident. Ce cours pour débutants met de l’ordre dans tout cela autour d’IconDesk, un petit atelier d’icônes et d’images qui gagne un mécanisme par module. Sept modules partent du modèle d’image lui-même — une propriété Image qui porte un objet System.Drawing.Image rendu en PNG par le serveur, face à une chaîne ImageSource que le client résout — puis passent aux formats bitmap et SVG dans le PictureBox, avec ses modes de dimensionnement et son chargement asynchrone. Vous travaillerez ensuite les images de thème, les URL, le suffixe de couleur des SVG monochromes et l’Image Selector du designer, installerez les packs d’icônes officiels Wisej-4 depuis NuGet, embarquerez vos propres fichiers dans l’assembly pour les adresser avec resource.wx, puis construirez votre propre pack d’icônes réutilisable avec son catalogue statique. Le dernier module ajoute les polices d’icônes et le contenu HTML, et fixe la politique d’icônes du projet : accessibilité, licences, mise en cache et dépendances externes. Il s’adresse aux développeurs qui connaissent les bases de C# et ont déjà travaillé avec les contrôles et le designer de Wisej.NET.
Utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour des interfaces nettes et maintenables.
- Niveau: Beginner
- Durée: 9 h
- Modules: 7
Programme
Module 1: Le modèle d’image de Wisej.NET : Image, ImageSource et ImageList
Module 1 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le modèle d’image, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Les deux pipelines d’image : une propriété Image qui porte un System.Drawing.Image que le serveur envoie au navigateur sous forme de PNG, face à une chaîne ImageSource ou IconSource que le client résout comme une URL, un nom de thème, un chemin resource.wx ou un élément de pack d’icônes, auxquels s’ajoutent le contrat commun IImage et l’ImageList qui permet à plusieurs contrôles de partager un même jeu d’images adressées par clé. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoObjet image ou chaîne d’image : choisissez le bon · 14 min
Objet image ou chaîne d’image : choisissez le bon — une vidéo pas à pas guidée du Module 1, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Icônes et images dans Wisej.NET, module 1. Wisej.NET propose plusieurs façons de poser une image sur un contrôle : la première décision de ce cours est donc toujours de savoir quel mécanisme possède l’image.
La propriété Image porte un System.Drawing.Image que le serveur garde en mémoire et envoie au navigateur en PNG. ImageSource ne porte qu’une chaîne, donc rien n’est décodé côté serveur. Les deux remplissent le même emplacement visuel du contrôle, et c’est précisément pour cela que le choix doit être délibéré.
Cette chaîne peut être une URL relative, une URL absolue, un nom d’image de thème ou un chemin resource.wx, et c’est le client qui la résout. Les contrôles porteurs d’image partagent un même contrat via IImage : un bouton, une étiquette et une cellule de grille exposent donc la même famille de propriétés d’image.
Dans IconDesk, le bouton Open reçoit un objet image que le serveur lit depuis un fichier. Le bouton Save reçoit un nom d’image de thème sur ImageSource. Print et Delete partagent une ImageList et choisissent leur image par clé : c’est la liste qui décide de ce qu’ils dessinent.
Une ImageList est une indirection plutôt qu’un stockage. Une clé porte un sens qui survit à un changement d’ordre, alors qu’un index n’est qu’une position et désigne silencieusement une autre image dès que la collection bouge. Remplacez l’image rangée sous une clé et tous les contrôles qui l’utilisent suivent, sans toucher au reste du code.
L’étiquette de diagnostic demande à chaque bouton, via IImage, quelle propriété d’image est réellement renseignée. Cette question attrape un défaut courant : une source d’image affectée après une clé prend l’emplacement, la clé reste définie, et le contrôle dessine la chaîne à la place. Lire le contrôle vaut mieux que deviner.
À l’exécution, quatre icônes arrivent par quatre chemins différents et paraissent toutes aussi correctes. Seul le bouton Open a fait décoder une image au serveur ; les trois autres ont été résolues par le navigateur. L’étiquette nomme le mécanisme derrière chacune : la différence se voit au lieu d’être supposée.
Remplacer l’image derrière la clé delete met à jour ce bouton tout seul, parce que le contrôle désigne la clé et non l’image. Affecter ensuite une source d’image au même bouton change ce qu’il dessine, tandis que la clé reste définie et ignorée.
Lab un : construisez le panneau de commandes d’IconDesk avec les trois mécanismes, ajoutez l’étiquette de diagnostic qui lit chaque bouton via IImage, et consignez ce qu’ont produit l’échange de clé et la double affectation.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 1 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Quatre boutons, quatre mécanismes d’image · 45 min
Objectif: Créez le projet IconDesk et dotez-le d’un panneau de commandes avec les boutons Open, Save, Print et Delete, chacun portant son icône par un mécanisme différent. Chargez btnOpen depuis un System.Drawing.Image côté serveur, affectez une image de thème nommée à btnSave.ImageSource, et faites pointer btnPrint et btnDelete vers une même ImageList partagée via ImageKey. Ajoutez un libellé de diagnostic qui inspecte chaque bouton via IImage et indique quel mécanisme est réellement en jeu, puis remplacez l’image stockée sous une clé de l’ImageList et vérifiez que tous les contrôles qui utilisent cette clé suivent le changement. Livrables : Panneau de commandes IconDesk avec les boutons Open, Save, Print et Delete ; btnOpen portant un System.Drawing.Image chargé sur le serveur et btnSave une image de thème nommée sur ImageSource ; btnPrint et btnDelete partageant une même ImageList via ImageKey plutôt qu’ImageIndex ; Libellé de diagnostic qui lit chaque bouton via IImage et nomme le mécanisme derrière son icône ; Note de lab consignant ce qui s’est passé lors du remplacement d’une clé de l’ImageList et lorsque deux propriétés d’image ont été définies sur le même bouton.
Module 2: Bitmaps, SVG et PictureBox : formats, dimensionnement et chargement
Module 2 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les formats et les modes de dimensionnement du PictureBox, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Deux listes de formats parce qu’il y a deux pipelines : bitmap, métafichier, icône, JPEG, GIF et PNG via System.Drawing et PictureBox.Image, face aux jpg, jpeg, png, gif, svg et bmp que resource.wx et les images de thème acceptent sous forme de chaînes, avec les modes de dimensionnement du PictureBox et les points d’entrée Load synchrone et LoadAsync asynchrone. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoUne image, six modes de dimensionnement, deux pipelines · 14 min
Une image, six modes de dimensionnement, deux pipelines — une vidéo pas à pas guidée du Module 2, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Module 2. La page ImageLab d’IconDesk place côte à côte un objet image et une chaîne image-source sur des contrôles PictureBox, pour que la différence entre les deux pipelines devienne visible.
Demander quels formats Wisej.NET prend en charge n’a pas de réponse unique, et traiter la question ainsi provoque de vrais défauts. Un logo étiré hors proportion, une page figée pendant le téléchargement d’une photo distante, un fichier d’icône qui refuse de se charger : tout cela vient d’avoir fondu deux listes de formats en une seule.
Gardez les listes séparées. Bitmap, métafichier, icône, JPEG, GIF et PNG passent par System.Drawing et la propriété Image. Le gestionnaire de ressources et les images de thème acceptent JPEG, PNG, GIF, SVG et bitmap sous forme de chaînes. Le SVG appartient au pipeline des chaînes ; ce n’est pas un format System.Drawing.
Six modes de taille décrivent ce qui se passe quand l’image et la boîte ne sont pas d’accord. Normal rogne, AutoSize redimensionne la boîte à l’image, CenterImage centre, StretchImage déforme, Zoom fait tenir l’image entière, et Cover remplit la boîte en recadrant le débordement.
Quatre contrôles partagent une seule chaîne source et ne diffèrent que par le mode de taille, ce qui isole le dimensionnement du chargement. L’ancien fichier d’icône quitte la chaîne image-source pour la propriété Image, parce qu’icône et métafichier appartiennent au pipeline System.Drawing.
LoadAsync va chercher la photo partenaire sans bloquer la page pendant son arrivée. Une icône vectorielle, adressée comme une chaîne de ressource, alimente quatre tailles différentes à partir de la même ressource. Un gestionnaire de rapport indique ensuite, pour chaque PictureBox, si l’image vient de Image ou d’ImageSource.
À l’exécution, la même ressource est rognée par Normal, ajustée par Zoom, recadrée par Cover et aplatie par StretchImage. La photo distante est encore en route, et la page reste utilisable pendant son téléchargement : c’est tout l’intérêt du chargement asynchrone.
La rangée vectorielle reste nette à seize, vingt-quatre, trente-deux et quarante-huit pixels. Le petit bitmap est déjà flou à trente-deux, parce que le navigateur agrandit des pixels qui n’ont jamais existé. Le rapport nomme ensuite le pipeline derrière chaque contrôle, pour que personne n’ait à deviner.
Lab deux : construisez ImageLab avec quatre modes de taille sur une ressource matricielle, une photo distante via LoadAsync, une icône vectorielle à quatre tailles, le gestionnaire de rapport et la note de format.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 2 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Modes de dimensionnement, LoadAsync et un SVG net · 45 min
Objectif: Construisez dans IconDesk une page ImageLab qui rend les deux pipelines visibles côte à côte. Affichez un même visuel raster quatre fois avec SizeMode défini sur Normal, Zoom, Cover et StretchImage pour que les différences de rognage et de déformation sautent aux yeux, ajoutez un PictureBox qui récupère un JPEG distant avec LoadAsync et garde la page réactive pendant son arrivée, et placez un SVG affecté via ImageSource à 16, 24, 32 et 48 pixels pour prouver qu’il reste net. Terminez par un gestionnaire qui indique, pour chaque PictureBox de la page, si son image vient d’Image ou d’ImageSource. Livrables : Page ImageLab affichant un même visuel raster dans les modes de dimensionnement Normal, Zoom, Cover et StretchImage ; PictureBox qui récupère un JPEG distant avec LoadAsync sans bloquer la page ; Un SVG affecté via ImageSource et rendu à 16, 24, 32 et 48 pixels ; Gestionnaire de rapport qui nomme, pour chaque PictureBox, si l’image vient d’Image ou d’ImageSource ; Note de formats listant les ressources du lab qui passent par System.Drawing et celles qui restent des chaînes de ressource.
Module 3: Images de thème, URL, couleur des SVG et sélecteur d’images du designer
Module 3 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les images de thème, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Des sources d’image qui ne sont pas des fichiers livrés à côté de la page : des images de thème nommées chargées depuis le cache de thème du client, des URL relatives et absolues, des données base64 embarquées dans le thème, l’Image Selector de Visual Studio qui écrit la chaîne de source à votre place, et le suffixe ?color= qui recolore un SVG monochrome adapté avec un nom de couleur du thème. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoNoms de thème, URL et un SVG recoloré · 14 min
Noms de thème, URL et un SVG recoloré — une vidéo pas à pas guidée du Module 3, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Icônes et images, module 3. L’image d’un contrôle n’est souvent pas un fichier livré à côté de la page, mais une chaîne source, et l’écran IconGallery remplit cinq emplacements de cinq façons différentes.
Le module deux a laissé IconDesk avec un chemin tapé pour chaque apparence, ce qui convient jusqu’au jour où l’apparence doit changer. Un thème peut fournir l’image comme URL relative, URL absolue ou données intégrées, ou comme image nommée, et seule l’image nommée ajoute une indirection.
Affecter un nom d’image de thème à ImageSource n’ouvre aucun fichier et ne crée aucun System.Drawing.Image. Le nom est une clé que le client résout depuis le thème déjà chargé, et c’est pourquoi un autre thème peut fournir une autre image sans la moindre modification de votre code C#.
L’Image Selector du designer parcourt les images du projet, les images de thème et chaque pack d’icônes référencé, avec un aperçu de chacune. Pour les icônes monochromes, il prévisualise aussi la couleur : la décision de recoloration se prend en regardant, plutôt qu’en recompilant et en rafraîchissant.
Lisez ce que le sélecteur a écrit. Designer.cs contient une chaîne de source de ressource qui pointe vers l’assembly détenant l’image, jamais une copie du fichier lui-même. La même chaîne peut être calculée à l’exécution, ce qui compte quand l’icône dépend de l’état plutôt que de la mise en page.
Ajouter le suffixe de couleur à une chaîne source recolore une icône vectorielle monochrome adaptée. Une couleur littérale fonctionne, mais un nom de couleur de thème vaut mieux : l’icône suit alors le thème au lieu de figer une valeur qu’un futur changement de palette contredira silencieusement.
À l’exécution d’IconGallery, cinq emplacements sont remplis par une clé de thème, une URL relative, une URL absolue, une ressource de pack et une icône vectorielle recolorée. Toutes paraissent aussi solides, pourtant seule l’URL absolue dépend d’un hôte que vous ne contrôlez pas, et cela mérite d’être su avant le déploiement.
Changez maintenant de thème. La clé de thème se résout vers une nouvelle image, et la couleur de thème du suffixe change avec elle. Les trois sources qui désignaient une image précise restent identiques : c’est la différence entre une référence sémantique et une référence littérale.
Lab trois : remplissez IconGallery via l’Image Selector, recolorez une icône monochrome avec un nom de couleur de thème, lisez les chaînes dans Designer.cs, et rédigez la note de changement de thème.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 3 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Images de thème, Image Selector et recolorage · 45 min
Objectif: Remplissez une page IconGallery dans IconDesk à l’aide de l’Image Selector du designer plutôt qu’en saisissant les chaînes de source à la main. Affectez des images à cinq contrôles : une image de thème nommée, un SVG du projet référencé par URL relative, une URL absolue et au moins deux ressources issues d’un pack d’icônes si un pack est installé. Recolorez un SVG monochrome avec le suffixe ?color= et un nom de couleur du thème, ouvrez le Designer.cs généré et lisez les chaînes de source d’image produites par le sélecteur, puis basculez l’application entre deux thèmes Wisej et notez quelles ressources ont changé et lesquelles sont restées strictement identiques. Livrables : Page IconGallery avec cinq contrôles dont les images ont été affectées via l’Image Selector du designer ; Parmi elles, une image de thème nommée, un SVG relatif du projet, une URL absolue et au moins deux ressources de pack d’icônes ; SVG monochrome recoloré via le suffixe ?color= avec un nom de couleur du thème ; Extrait de Designer.cs montrant les chaînes de source d’image générées par le sélecteur ; Note de changement de thème consignant les ressources qui ont suivi le thème et celles qui sont restées fixes.
Module 4: Packs d’icônes Wisej.NET et NuGet
Module 4 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les packs d’icônes, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Ce qu’est réellement un pack d’icônes : un assembly .NET qui transporte des centaines de fichiers SVG en ressources embarquées, adressés individuellement via resource.wx et mis en cache par le navigateur une icône à la fois, installé depuis les packages NuGet officiels Wisej-4, parcouru dans l’explorateur d’images de Visual Studio et référencé depuis C# via le catalogue d’icônes du pack. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoInstallez un pack, choisissez une icône, lisez l’URL générée · 14 min
Installez un pack, choisissez une icône, lisez l’URL générée — une vidéo pas à pas guidée du Module 4, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Module 4. IconDesk a besoin de cinq icônes aujourd’hui et peut-être de quarante de plus ce trimestre. Les collecter fichier par fichier vous donne plusieurs épaisseurs de trait, aucun style commun et aucune trace de leur provenance.
Un pack d’icônes est un assembly .NET ordinaire dont les images sont stockées en ressources embarquées. Un seul fichier dans le dossier de sortie peut porter des centaines ou des milliers d’icônes, et chacune reste adressable individuellement via le gestionnaire de ressources : rien n’est empaqueté en un bloc inutilisable.
Les deux mécanismes livrent différemment, et cela décide de la place de chacun. Les icônes de pack sont tirées : une requête à la première utilisation, puis le cache du navigateur. Les images de thème sont poussées, préchargées avec le thème, et c’est pourquoi les très grands catalogues ont leur place dans un pack.
Installez les packs depuis les paquets officiels Wisej-4 et gardez leurs versions majeures alignées sur celle du framework. Compilez ensuite le projet avant de les chercher, car l’explorateur d’images ne liste que les packs contre lesquels le projet a réellement compilé.
Choisissez une icône et lisez ce que le designer a généré : le gestionnaire de ressources, l’assembly du pack, le fichier d’icône, et éventuellement le suffixe de couleur. Chaque partie de cette chaîne est vérifiée à l’exécution, et c’est pourquoi un nom de fichier tapé de mémoire ne résout rien.
En C#, préférez le catalogue d’icônes du pack à une chaîne écrite à la main : un renommage devient alors une erreur de compilation plutôt qu’un contrôle vide. L’espace de noms exact varie d’un pack à l’autre. Affectez une seule propriété d’image par contrôle, et gardez un libellé à côté de toute icône qui porte du sens.
La page IconCompare montre les cinq mêmes concepts dessinés par deux familles, ce qui rend la différence stylistique évidente comme aucune page de catalogue ne le fait. Deux icônes monochromes acceptent le suffixe de couleur avec un nom de couleur de thème ; une image multicolore l’ignore tout simplement.
Le panneau réseau fournit la preuve : une requête par icône au premier chargement, et des réponses depuis le cache au rechargement. Une recommandation appuyée là-dessus est défendable, et cela montre aussi pourquoi référencer un gros pack ne coûte pas un gros téléchargement à l’apprenant.
Lab quatre : référencez deux packs Wisej-4, construisez une page IconCompare à partir des deux, choisissez au moins cinq icônes dans l’explorateur, recolorez-en deux, et nommez la famille d’icônes principale du projet.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 4 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Deux packs d’icônes, côte à côte · 45 min
Objectif: Ajoutez à IconDesk deux packages NuGet officiels de packs d’icônes Wisej-4 et construisez une page IconCompare qui montre les mêmes cinq concepts, Save, Delete, Search, User et Settings, tirés des deux familles, pour que la différence visuelle soit impossible à manquer. Choisissez au moins cinq des icônes via l’explorateur d’images de Visual Studio plutôt qu’en saisissant le chemin, affectez les autres depuis le catalogue du pack en C#, recolorez-en deux avec le suffixe ?color=, et observez le panneau réseau pour voir les fichiers d’icônes arriver une requête à la fois, puis provenir du cache du navigateur. Concluez par une courte recommandation désignant la famille d’icônes principale du projet. Livrables : Deux packages NuGet officiels de packs d’icônes Wisej-4 référencés par IconDesk ; Page IconCompare montrant Save, Delete, Search, User et Settings dans les deux packs ; Au moins cinq icônes choisies via l’explorateur d’images de Visual Studio plutôt que saisies à la main ; Deux icônes recolorées avec le suffixe de couleur et une note indiquant quel visuel a accepté le recolorage ; Recommandation d’un paragraphe désignant la famille d’icônes principale du projet, avec les preuves de mise en cache par le navigateur qui la justifient.
Module 5: Ressources embarquées et resource.wx
Module 5 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les ressources embarquées, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Livrer les images à l’intérieur de l’assembly : Build Action défini sur Embedded Resource, le gestionnaire resource.wx avec et sans qualificateur d’assembly, les extensions css, js, html, jpg, jpeg, png, gif, svg et bmp qu’il sait servir, et le fichier déployé qui peut remplacer une ressource embarquée sans recompilation. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoEmbarquez-la une fois, adressez-la avec resource.wx · 14 min
Embarquez-la une fois, adressez-la avec resource.wx — une vidéo pas à pas guidée du Module 5, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Icônes et images, module 5. Cinq ressources d’IconDesk cessent d’être des fichiers libres à côté de l’application et sont désormais livrées dans l’assembly, adressées par une chaîne plutôt que par un chemin sur le disque.
Une image déployée à côté de l’application est à une copie oubliée de la panne. Le serveur répond introuvable, le contrôle ne dessine rien, et le fichier est toujours présent sur la machine du développeur : c’est pourquoi le problème survit en général jusqu’à ce que quelqu’un d’autre lance la compilation.
Il n’y a pas d’API pour cela. Ajoutez le fichier au projet, mettez son action de génération sur Embedded Resource, et les octets passent dans le manifeste de l’assembly. Cette seule propriété transforme aussi une bibliothèque de classes ordinaire en pack d’icônes, comme le montrera le module six.
Adressez la ressource par une chaîne. Sans nom d’assembly, Wisej.NET cherche une ressource correspondante parmi les assemblies chargés. Nommer l’assembly explicitement, écrit sans l’extension de fichier, lève l’ambiguïté quand deux assemblies pourraient contenir chacun un fichier du même nom.
Le gestionnaire sert exactement neuf extensions : feuilles de style, scripts, HTML, JPEG dans ses deux orthographes, PNG, GIF, graphiques vectoriels et bitmaps. Rien d’autre n’est servi : un fichier d’icône embarqué avec de grands espoirs reste donc un introuvable, et la solution est de le convertir plutôt que de déboguer l’URL.
Un fichier déployé avec l’application peut répondre à la même adresse avant la copie embarquée. C’est utile pour la refonte visuelle d’un client ou un correctif urgent sans recompilation, et cela veut dire que le dossier de ces remplacements est désormais à protéger.
Dans le navigateur, cinq requêtes renvoient cinq réponses réussies, toutes servies depuis l’assembly de l’application, et le rechargement vient du cache à la place. L’image vectorielle reste du balisage d’un bout à l’autre ; à aucun moment elle ne devient une image System.Drawing.
Déposer un logo de remplacement à côté de l’application déployée change l’image sans aucune recompilation. Ensuite, une lettre doublée dans un nom de ressource produit un introuvable, et la checklist en six étapes le trouve à l’étape quatre, ce qui va plus vite que de relire le code.
Lab cinq : embarquez cinq ressources, affichez-les toutes sur ResourceLab, qualifiez une source avec le nom de l’assembly, remplacez-en une par un fichier déployé, et rédigez la chasse à l’introuvable.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 5 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Embarquer, qualifier et remplacer des ressources · 45 min
Objectif: Ajoutez à l’application IconDesk un dossier Resources contenant logo.svg, status-ok.svg, status-warning.svg, photo.png et badge.gif, et passez chacun d’eux en Build Action Embedded Resource. Construisez une page ResourceLab qui les affiche tous les cinq via des sources d’image resource.wx, écrivez l’une de ces sources en plaçant le nom de l’assembly de l’application devant le fichier pour que la résolution ne puisse pas être ambiguë, et laissez les autres non qualifiées. Déposez ensuite un fichier de remplacement à côté de l’application déployée pour remplacer une ressource embarquée, et capturez l’avant et l’après. Terminez en écrivant délibérément une URL de ressource mal orthographiée et en notant les étapes qui ont permis d’identifier la panne. Livrables : Dossier Resources avec logo.svg, status-ok.svg, status-warning.svg, photo.png et badge.gif tous marqués Embedded Resource ; Page ResourceLab affichant chaque ressource embarquée via une source d’image resource.wx ; Une source d’image qualifiée par le nom de l’assembly de l’application et les autres laissées non qualifiées ; Fichier déployé qui remplace une ressource embarquée, capturé avant et après ; Note de dépannage listant les étapes qui ont permis d’identifier une URL de ressource mal orthographiée.
Module 6: Créer votre propre pack d’icônes Wisej.NET
Module 6 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le pack d’icônes personnalisé, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
La recette en quatre étapes derrière chaque pack d’icônes : une bibliothèque de classes, un répertoire Resources, des fichiers d’icônes marqués Embedded Resource et un catalogue statique de chaînes resource.wx qui offre à l’équipe l’IntelliSense au lieu de chemins magiques, ainsi que les pratiques de nommage, de versionnage, de recolorage et de remplacement qui gardent le pack maintenable. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoDouze SVG deviennent un pack d’icônes réutilisable · 14 min
Douze SVG deviennent un pack d’icônes réutilisable — une vidéo pas à pas guidée du Module 6, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Module 6. IconDesk utilise maintenant des icônes partout et n’en possède aucune. Le remède est un pack à lui : une bibliothèque de classes, un répertoire Resources, et douze icônes vectorielles marquées comme ressources embarquées.
Pour l’instant, la même icône s’écrit de quatre façons légèrement différentes sur quatre écrans. Chacun de ces chemins est une chaîne : trois d’entre eux compilent parfaitement et n’échouent que dans le navigateur, ce qui déplace l’erreur de la compilation vers l’écran d’un client.
La recette documentée tient en quatre étapes : créez une bibliothèque de classes, créez un répertoire Resources, mettez-y les icônes, et passez leur action de génération à Embedded Resource. Il en sort une adresse faite du gestionnaire, du nom de l’assembly et du chemin de la ressource. Vérifiez-la une fois contre l’application en cours d’exécution.
Le catalogue transforme cette adresse en IntelliSense. Une constante privée détient la partie commune du chemin, et une constante publique par icône nomme le concept plutôt que le fichier, de sorte que les appelants écrivent un nom produit comme Save ou Warning au lieu de répéter un chemin.
Deux routes aboutissent à la même chaîne. L’Image Selector l’écrit dans Designer.cs quand une décision de mise en page choisit l’icône, et le code d’exécution la lit dans le catalogue quand c’est l’état de l’application qui décide. Et l’image vectorielle reste du balisage que le client résout, jamais une image System.Drawing.
Ça tourne. Douze icônes viennent d’un seul assembly référencé, arrivant une requête à la fois à la première utilisation, puis servies depuis le cache au chargement suivant. Rien dans l’application n’avait besoin de savoir où vivent ces images sur le disque.
Le suffixe de couleur recolore deux icônes et est ignoré par la troisième, parce que ce fichier porte une couleur codée en dur dans l’image. Retirez cette valeur du balisage, puis revérifiez le résultat dans un thème sombre plutôt que de supposer que le correctif a suivi.
Trois habitudes maintiennent le pack en vie : un concept par icône, le catalogue traité comme l’API publique du pack pour qu’un renommage reste une affaire de compilateur, et un chemin de remplacement documenté pour une application qui a besoin d’une autre image sous le même nom familier.
Lab six : construisez IconDesk.Icons avec douze icônes embarquées et le catalogue, affectez-en dans le designer et depuis le code, vérifiez trois recolorations, et rédigez les règles de versionnage.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 6 · 10 min · Note de réussite 80%
- Lab pratiqueLab — IconDesk.Icons : votre propre pack · 45 min
Objectif: Créez IconDesk.Icons comme bibliothèque de classes à côté de l’application, placez au moins douze icônes SVG dans un répertoire Resources et marquez-les Embedded Resource. Ajoutez un catalogue statique AppIcons qui expose chaque icône sous forme de chaîne resource.wx nommée pour que les appelants n’aient jamais à saisir un chemin, référencez la bibliothèque depuis IconDesk, puis affectez certaines icônes via le designer et d’autres depuis le catalogue en C#. Vérifiez le suffixe de couleur sur trois icônes et notez le nettoyage SVG que certaines ont demandé. Terminez par les règles de nommage et de versionnage qui décident comment une nouvelle icône entre dans le pack. Livrables : Bibliothèque de classes IconDesk.Icons avec au moins douze fichiers SVG dans un répertoire Resources, tous en Embedded Resource ; Catalogue statique AppIcons exposant chaque icône sous forme de chaîne resource.wx nommée ; Page IconDesk affectant certaines icônes via le designer et d’autres depuis le catalogue AppIcons ; Trois icônes vérifiées avec le suffixe de couleur, avec une note sur le nettoyage SVG qu’elles ont demandé ; Règles de nommage et de versionnage décrivant comment une nouvelle icône entre dans le pack et comment une application en remplace une.
Module 7: Polices d’icônes, contenu HTML et stratégie d’icônes en production
Module 7 de Icônes et images dans Wisej.NET — utilisez packs d’icônes, SVG, bitmaps, ressources embarquées et polices d’icônes pour construire des interfaces nettes et maintenables. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les polices d’icônes et la politique de production, réussissez la vérification des connaissances, puis réalisez le lab pratique dans IconDesk.
- LectureGuide de la leçon · 14 min
Le dernier mécanisme et la politique qui les relie tous : une feuille de style de police d’icônes chargée depuis Default.html, AllowHtml sur les contrôles qui doivent interpréter le markup, des glyphes d’icônes dans les cellules d’une DataGridView avec des clics d’élément fondés sur les rôles, et une checklist de production couvrant l’accessibilité, les licences, la mise en cache, les dépendances externes et la cohérence visuelle. Ce que cela signifie pour un développeur qui connaît les bases de C# et a déjà travaillé avec les contrôles et le designer de Wisej.NET — et comment aborder ce module.
- LectureGuide du lab / de l’examen · 10 min
Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.
- Leçon vidéoPolices d’icônes, contenu HTML et la politique de production · 14 min
Polices d’icônes, contenu HTML et la politique de production — une vidéo pas à pas guidée du Module 7, construite étape par étape dans IconDesk. Elle se lance directement ici, dans le lecteur.
Transcription de la narration
Icônes et images dans Wisej.NET, module 7, le projet final. IconDesk sait déjà dessiner une icône de cinq façons différentes. Il en gagne maintenant une sixième, et surtout la règle écrite qui tranche entre elles.
Un objet image, une chaîne image-source, une image de thème, une ressource embarquée, et maintenant une police d’icônes. Six mécanismes sans premier choix écrit : voilà comment la même commande Delete ne se ressemble plus sur trois écrans de la même application.
Une police d’icônes court-circuite entièrement le pipeline d’images. Un seul lien de feuille de style dans le Default.html suffit : le navigateur récupère le CSS et les fichiers de police, et une classe CSS dans le texte d’un contrôle qui autorise le HTML dessine le glyphe comme un caractère.
Aucune approche ne l’emporte. Les ressources Wisej apportent la recoloration, le sélecteur d’images et de vraies propriétés d’image. Les polices apportent un système de design CSS existant et un glyphe qui se place en ligne avec le texte. Réseau public ou serveur maison, c’est une vraie décision.
Dans le code, les deux décisions sont à des niveaux différents. Le lien de feuille de style vaut pour toute la page ; autoriser le HTML est une décision par contrôle, prise délibérément. Deux glyphes de rôles différents partagent alors une cellule de grille, et le clic indique l’élément touché.
Voici la politique. Les images de thème pour les visuels sémantiques qui suivent le thème. Un pack principal pour les commandes. Le pack personnalisé pour vos images produit. Le matriciel pour les photographies. Les polices d’icônes seulement là où l’intégration HTML paie la dépendance supplémentaire.
La page de synthèse fait tourner les cinq mécanismes d’un coup. Changez de thème : seules l’image de thème et l’icône vectorielle recolorée le suivent. L’icône de pack, celle du pack personnalisé et la ressource embarquée restent telles que dessinées, et la politique est écrite autour de ce comportement.
La colonne d’actions répond à deux clics différents depuis une seule cellule en lisant le rôle de l’élément touché. La passe qualité se répète ensuite en thème sombre, en vérifiant que chaque glyphe reste lisible et que chaque action porte encore un nom qu’un lecteur d’écran peut annoncer.
Le projet final : la feuille de style et une barre d’outils qui autorise le HTML, la colonne de grille sensible au rôle, la page de synthèse à cinq mécanismes, la politique d’icônes écrite, et la note qualité en thème clair et sombre.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple IconDesk de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie.
- Quiz de connaissancesVérification des connaissances — Module 7 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Projet de synthèse : la politique d’icônes d’IconDesk · 45 min
Objectif: Terminez le projet de synthèse IconDesk. Référencez une feuille de style de police d’icônes depuis Default.html, activez AllowHtml sur une petite barre d’outils ou une carte et affichez ses icônes sous forme de glyphes de police, puis construisez une colonne DataGridView dont les cellules contiennent des actions en police d’icônes et lisez l’élément sur lequel l’utilisateur a cliqué pour qu’Edit et Delete fassent des choses différentes. Construisez une page de synthèse qui démontre d’un seul coup tous les mécanismes vus dans le cours : une image de thème, une icône d’un pack officiel, une icône d’un pack personnalisé, un logo embarqué et un SVG recoloré. Rédigez ensuite la politique d’icônes de production du projet et effectuez une passe de QA dans un thème clair et un thème sombre. Livrables : Feuille de style de police d’icônes référencée depuis Default.html et une barre d’outils ou une carte en AllowHtml affichant des glyphes de police ; Colonne DataGridView dont les cellules affichent des actions en police d’icônes et réagissent à l’élément cliqué ; Page de synthèse IconDesk démontrant une image de thème, une icône d’un pack officiel, une icône d’un pack personnalisé, une ressource embarquée et un SVG recoloré ; Politique d’icônes de production écrite couvrant l’accessibilité, les licences, la mise en cache et les dépendances externes ; Passe de QA effectuée dans un thème clair et un thème sombre avec les constats consignés.