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

Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 - 24 juin 2005 à 12:26
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 24 juin 2005 à 14:51
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

cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 juin 2005 à 12:41
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.
0
Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 1
24 juin 2005 à 13:34
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 :)
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 juin 2005 à 13:38
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.
0
Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 1
24 juin 2005 à 13:46
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
24 juin 2005 à 14:03
Tu défini un imagelist dans une classe static tu met ton imagelist public. Tous tes treeview pourront y pointer dessus

Théo
0
Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 1
24 juin 2005 à 14:08
... 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 ^_^
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 juin 2005 à 14:35
ben dans les ressources peut y avoir des bitmaps c'est sur mais des imageslists ca m'etonnerais.
0
Atmaweapon Messages postés 50 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 11 avril 2006 1
24 juin 2005 à 14:42
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é ;)
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 juin 2005 à 14:51
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..
0
Rejoignez-nous