[.Net] Treeview et images -> Probleme d'Imagelist

Signaler
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Bonjour !



Mon problème est simple : j'aimerais afficher des images dans un treeview.

En utilisant le GUI, j'arrive a faire ça tout a fait ... le problème
est qu'il utilise un ImageList et que je ne sais absolument pas comment
cela fonctionne ! (je me suis débrouillé avec le GUI ... mais après, au
niveau du code, je suis un peu largué).



Le truc, c'est que je veux pouvoir "partager" mon ImageList entre
plusieurs classes différentes qui créent des arborescences afin
d'uniformiser un peu le tout...

Je suppose qu'il est possible de "partager" l'image list (car je ne
vais quand meme pas créer autant d'imagelist identique que j'aurai
d'arborescence...) mais je ne sais pas :

1/ comment faire

2/ comment y accéder ensuite



Merci d'avance.

9 réponses

Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Tu te créer une image list, la c'est des images qui ont un chemin mais
faut mieux se faire des images contenu dans les ressources (c'est à
dire intégré à ton executable.)



status = new ImageList() ;

status.Images.Add(new Bitmap("c:\\statut\\a.bmp")) ;

status.Images.Add(new Bitmap("c:\\statut\\b.bmp")) ;

status.Images.Add(new Bitmap("c:\\statut\\c.bmp")) ;

status.Images.Add(new Bitmap("c:\\statut\\d.bmp")) ;

status.Images.Add(new Bitmap("c:\\statut\\e.bmp")) ;

treeview.ImageList = status ;



et la ton TreeNode tu lui allou une imageList.



noeud.set_ImageIndex(2) ;



Sinon quand tu affiche ton treeview chaque fois que tu rajoute un noeud
tu fais appelle à la fonction determine_image(TreeNode mon_node) et en
fonction des stats que tu va calculer tu lui allou la bonne image.



Je sais pas si c'est ca que tu demandais par contre.
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
J'avais bien pigé ca : le probleme n'est pas de créer une ImageList ...
le probleme est de partager mon ImageList (en utilisant les ressources
peut-etre ?) pour pouvoir y accéder depuis n'importe quelle classe
affichant un de mes treeview :)
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ben en utilisant les ressources les images ont un nom et sont
accessible de partouts. Sinon tu te créer une classe ImageList que tu
initialise avec toutes t'es images que tu mets dans un fichier.h et que
tu peux appeller de n'importe ou.
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
un fichier .h o_O ... on est en c# la :p

bon soit... une classe singleton pour faire ca... pourquoi pas mais ... *fleme*

Le probleme des ressources : je ne sais pas les utiliser ... donc je
veux bien croire qu'associer un nom a mes ressources peut résoudre ce
problème... mais je ne sais pas comment ;)

Autre problème : il va falloir que je recrée mon ImageList à chaque
fois en allant rechercher les bonnes images a chaque fois ... hum ...
ce n'est pas "propre" : si un jour je rajoute une image, va falloir que
j'aille modifier le code où je "crée" tous mes imageList ... j'aime pas
! :) (bon ya des paliatifs comme faire une usine par exemple...)



J'aimerais savoir s'il n'est pas possible de créer dans une ressource,
tout comme on crée une référence a une image, une référece à un
ImageList ?
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
Tu défini un imagelist dans une classe static tu met ton imagelist public. Tous tes treeview pourront y pointer dessus

Théo
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
... c'est la solution de la classe singleton ca :)

(mais elle ne me "séduit" par car conceptuellement, faire une classe
rien que pour ça m'embete beaucoup : ca fait tres "bidouillage" et je
dois coder "proprement" ;) )



je suis un flemard et, au moins par curiosité, j'aimerais savoir s'il
n'est vraiment pas possible de partager un ImageListe avec les
ressources :)



Merci ^_^
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ben dans les ressources peut y avoir des bitmaps c'est sur mais des imageslists ca m'etonnerais.
Messages postés
50
Date d'inscription
dimanche 28 décembre 2003
Statut
Membre
Dernière intervention
11 avril 2006
1
ben ... dans le code auto-généré par le GUI, on peut trouver :



this.components = new System.ComponentModel.Container();

System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));

this.imageList1 = new System.Windows.Forms.ImageList(this.components);



// ....



this.imageList1.ImageSize = new System.Drawing.Size(16, 16);

this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

this.imageList1.TransparentColor = System.Drawing.Color.Transparent;



J'ai essayé de reproduire un code similaire "en dehors" de ma classe mais ca n'a pas marché ;)
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Je sais pas, c'est peut être possible, en tout ca pour inclure ton fichier de ressources tu fais propriété du projet



Editeur de liens, entrée, incorporation du fichier de ressources et tu
met le chemin ou il se trouve. Et pour le créer y'a des utilitaires
dans visual studio..