LisBox et images

Résolu/Fermé
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013 - 15 déc. 2012 à 11:37
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013 - 3 janv. 2013 à 18:55
Bonjour,

Je cherche à afficher une liste déroulante d'images, peut être basée sur une ListBox mais je n'ai pas encore trouvé de façon simple de la faire.
Merci pour vos suggestions.
PhB

8 réponses

pijaku Messages postés 12261 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 712
17 déc. 2012 à 11:33
Bonjour,

Peut être un contrôle imagelist...
Le contrôle ImageList fait partie des Common Controls Visual Basic 6.0 (mscomctl.ocx).
Voir ce tuto exemple sous VBA Excel.
0
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
17 déc. 2012 à 13:09
Bonjour;
Merci à Pijaku d'avoir tenté mais le contrôle ListView me semble une usine à gaz par rapport à mon besoin. De plus ImageList reste très rustique sur la présentation des photos (96 dpi si j'ai bien compris).
En fait je cherche à faire d'une façon simple les listes déroulantes d'image que l'on trouve dans tous les logiciels de création d'album en ligne.
0
pijaku Messages postés 12261 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 712
17 déc. 2012 à 13:58
Tu es dans le forum programmation, sous forum VB, peux tu préciser exactement ce que tu souhaites réaliser et avec quel logiciel et/ou quel langage tu souhaites faire cela?
0
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
18 déc. 2012 à 05:57
OK je tente de commuter ...
0
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
18 déc. 2012 à 06:04
Désolé, au risque de passer pour un âne, j'ai fait un tour dans la liste des forums, je n'ai pas trouvé mieux qu'ici pour expliquer mon problème :
Forum > programmation > VB

Donc, sous VB2008 je cherche à réaliser une liste déroumante contenant des images.
Cette liste contient des miniatures d'images, avec ou sans le nom de fichier attaché, et un Scroll permet de monter et descendre dans la liste.
Exactement comme l'Explorateur Windows en mode "grandes icones".
J'ai regardé du côté de ListView et n'ai pas trouvé à le mettre en oeuvre sans passer par une imagelist qui met toutes les images "au carré"!

Voila
merci pour l'aide
0
pijaku Messages postés 12261 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 712
Modifié par pijaku le 21/12/2012 à 09:58
Bonjour,

Désolé, au risque de passer pour un âne, j'ai fait un tour dans la liste des forums, je n'ai pas trouvé mieux qu'ici pour expliquer mon problème :
Forum > programmation > VB

Tu ne passes pas pour un âne, puisque tu es au bon endroit. Je voulais juste confirmation du langage de programmation...

Exactement comme l'Explorateur Windows en mode "grandes icones". + sans passer par une imagelist qui met toutes les images "au carré"!
Il me semble y avoir une incohérence. L'explorateur nous propose des images de même format. De plus, le contrôle imagelist possède une propriété de taille "personnalisée".

Mes connaissances étant quasi nulle dans ce domaine, j'espère que quelqu'un prendra le relais.

Cordialement,
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 194
21 déc. 2012 à 17:04
Bonjour, bonjour Pijaku,
Pour faire ce que tu veux ce n'est pas aussi simple que tu ne crois.
Le contrôle idéale pour faire ça c'est une PictureBox et les fonctions de la dll Gdi+
Si tu à Excel tu peu voir sur cette démo une exemple de ce que l'ont peu faire.
C'est sur une feuille Excel mais j'ai déjà réaliser la même chose en VB6 sur une PictureBox.
Malheureusement pour le VB.Net je commence seulement à la transcrire.
Avec VB.Net je pense qu'il n'est pas besoin de mettre des références aux dll, il y a des fonctions qui font directement appel à Gdi+ bien que ça fonctionne aussi avec les déclarations.

Pour le moment je peu pas t'aidé plus.
A+


0

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

Posez votre question
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
21 déc. 2012 à 18:24
Bonjour; et merci à ceux qui ont regardé ma question et pris deux minutes pour envoyer un message.
En fait j'en ai eu assez et je suis parti sur la solution drag & drop depuis l'explorateur (pourquoi refaire ce qui existe déjà ?).
Maintenant je me bats avec le Drop qui ne marche pas avec VB2008 et Win7 à cause de la protection entre utilisateurs de privilèges différents.
Je cherche le code qui permet à une appli Administrateur d'accepter des données d'une appli de moindre privilèges ce qui semble être le cas de l'explorateur dans la configuration standard de Windows ... alors que la session debug VB2008 tourne en administrateur.
A suivre !
PhB
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 194
21 déc. 2012 à 18:36
que la session debug VB2008 tourne en administrateur.
tu te trompe, il faut faire quelque manip pour que VB.Net tourne en tant qu'admin, et en plus il faut l'autorisation de l'utilisateur (qui doit être admin), mais ce n'est pas nécessaire dans ce que tu expose.
Le drag/drop ne fonctionne qu'entre appli qui gère Olé et l'explorateur ne gère pas le même système.
Il y à moyen de copier de l'explorateur vers VB.Net j'ai vu quelque explications à ce sujet. Fait une recherche sur le net avec Explorateur et VB.Net (c'est comme ça que j'avais fait).
A+
0
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
22 déc. 2012 à 08:57
Je vais ouvrir un autre sujet sur le Drag Drop car celui ci ne convient plus.
Merci aux contributeurs.
PhB
0
PhB91 Messages postés 10 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 3 janvier 2013
3 janv. 2013 à 18:55
Pour ceux qui ont participé à cette discussion.
Quelques nouvelles sur ce sujet résolu.

Pour faire une liste déroulante d'image il faut combiner une ImageList qui contient les images et une ListView qui va les afficher et éventuellement les associer à un texte.

Le lien entre les deux sa fait dans la propriété smallImageList et/ou LargeImageList qui doivent adresser l'imageList.

L'ennui c'est qu'une imageList ne gère qu'un format d'image donc un carré.

Aussi pour afficher des photos qui peuvent être verticale ou horizontales il faut fabriquer la miniature à l'aide de la fonction GetThumbnailImage après avoir calculer le ratio de réduction pour entrer dans le carré défini dans l'imageList :

miniature est on objet image
miniature = Bitmap.FromFile(fichier).GetThumbnailImage(largeur, hauteur)

Ensuite il faut dessiner ce rectangle dans un carré, pour ce faire je suis passé par une pictureBox affectée de la propriété sizemode = CenterImage, c'est très efficace et rapide, le rectangle qu'il soit vertical ou horizontal se retrouve bien au centre du carré. Cela évite de se cogner tout le calcul de centrage.

Enfin il faut tracer le résultat dans un bitmap temporaire à l'aide de
Picturebox.DrawToBitmap(bitmapTemporaire, rectangle) ou rectangle est un ensemble de coordonnées définies par X, Y, Height et width d'un objet rectangle.
Enfin on peut ajouter l'image à la liste

ImageList.Images.Add(temp)
ouf !!!

au final chaque item de la listView recevra une association d'un couple texte / index d'une image dans imageList.
Dans mon cas c'est un couple nom de fichier / image contenue dans le fichier.

I hope it could help ....
0