Visual Basic .Net:Gestion des images
Un article de WikiTuto.
Sommaire |
Définition
On en vient à présent à la manière de gérer les images dans une application. Il y a deux stratégies, possédant chacune leurs avantages et leurs inconvénients, qu'il vaut mieux connaître avant de faire des choix discutables et pénalisants.
Le premier mouvement, lorsqu'on veut utiliser des images, c'est évidemment de les intégrer aux contrôles (PictureBox, ImageList, Form, etc. en mode design, donc en tant que propriétés par défaut de ces contrôles. C'est la manière la plus simple de procéder, qui va avoir deux conséquences :
- les fichiers images vont être considérés par vb comme une partie intégrante de la Form. A l'enregistrement de celle-ci, les informations qu'ils contiennent seront donc recopiées dans un fichier annexe du fichier *.vb, portant le même nom et l'extension *.resx
- les fichiers image vont être directement incorporés à l'exécutable. L'avantage, c'est que celui-ci n'aura jamais de problème pour les trouver. Mais l'inconvénient, c'est que cette méthode peut alourdir considérablement l'exécutable en termes d'octets occupés, et peut finir par créer un monstre incapable de tourner sur certaines machines à la puissance limitée.
Voilà pourquoi cette technique, si elle a l'avantage de la facilité, est à réserver aux petites images, et qu'elle doit être proscrite dès qu'on a affaire à des images volumineuses et/ou trop nombreuses.
Pour celles-ci, comment faire ? Pour s'y retrouver, il va falloir en quelque sorte raisonner à rebrousse-poil, en partant du but à atteindre pour remonter vers les moyens à mettre en oeuvre. C'est parti :
Au final, que voulons-nous ? Que le(s) fichier(s) image(s) dont l'exécutable va avoir besoin soient stockés indépendamment de cet exécutable, afin de conserver à celui-ci la sveltesse qui fait toute son élégance.
Pour cela, il faut que l'exécutable contienne une ou plusieurs instructions donnant l'ordre de charger tel ou tel fichier image dans tel ou tel contrôle. Cette instruction est la méthode FromFile, qui appartient à la classe Image. On écrira ainsi :
PictureBox1.Image = Image.FromFile (nom du fichier)
C'est là qu'arrive un petit souci. Le nom du fichier, cela sous-entend de devoir préciser le répertoire dans lequel il se trouve. Dans le cas contraire, cette instruction serait incapable de fonctionner et provoquerait une erreur. Il faut donc absolument :
- spécifier correctement, lors de l'emploi de la méthode FromFile, le chemin relatif où va se trouver le fichier image par rapport à l'exécutable qu'est notre application.
- faire en sorte que lors de l'installation de cette application sur différentes machines, et ce, quel que soit le répertoire où s'effectuera l'installation, le fichier image se trouvera bel et bien dans le chemin relatif voulu.
Pour le moment, nous ne traiterons que du premier point. Le second, ce sera pour un peu plus tard, dans l'article Distribuer une application.
Exemple
Prenons un exemple. Admettons que nous choisissions de regrouper toutes les images dont notre application aura besoin au cours de son exécution, dans un sous-répertoire de l'exécutable, appelé "Pic".
Le chargement du fichier "Charlot.jpg" dans le contrôle Portrait devra donc dire ; "va chercher le fichier Charlot.jpg qui se trouve dans le répertoire Pic, celui-ci étant un sous-répertoire de l'endroit où tu es en train de t'exécuter." Ceci peut s'effectuer de la manière suivante (j'ai découpé le code en plusieurs instructions plus plus de lisibilité, mais on pourrait bien sûr aller plus vite :
Actuel = Directory.GetCurentDirectory Fic = Actuel & "\Pic\Charlot.jpg" Portrait.Image = Image.FromFile (Fic)
Et voilà. Je rappelle que cette méthode suppose de paramétrer l'installation pour que le sous-répertoire Pic soit automatiquement créé et que le fichier Charlot.jpg y soit déposé. Mais le gros avantage, c'est que l'exécutable reste d'une taille raisonnable.
Cette technique doit être mise en oeuvre, avec quelques aménagements, pour tous les fichiers annexes dont une application peut avoir besoin : fichiers de données, vidéos, sons, etc.
Voir aussi
- Couleurs et Propriétés
- Images et Contrôles
- Gérer intelligemment les images
- méthodes graphiques
- Retour au sommaire
Source : Christophe Darmangeat



