Shogo6
Messages postés36Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention17 juillet 2007
-
18 août 2006 à 20:23
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
20 août 2006 à 15:08
Bonsoir a tous!!
Alors voila j'ai un problème qui commence a me taper sur les nerfs : pour une application j'ai besoin d'afficher toute les images du disque dur dans des picture box de facon a les avoir toute sous les yeux en meme temps. Pour cela j'ai donc une classe qui me permet de créer et d'ajouter une picture box a maform, classe inspirée d'un code trouvé sur ce site (je me souviens plus ou mais c'etait à la base prévu pour des boutons). Le problème c'est que s'il y a qques images tout se passe bien mais si je fais le test avec des centaines d'images plus ou moins grosses, l'ordi rame sévère et finit par planter....Est ce que qqun aurait une solution pour optimiser tout ca ou un bout de code parce que la....Merci d'avance!!!
cs_badrbadr
Messages postés475Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention 3 novembre 20081 18 août 2006 à 21:33
C'est normal.
La question qu'il faut se poser est la suivante : Est-ce qu'on est capable de visualiser toutes les images d'un disque dur sur une Form sans utiliser de scroll bars? la réponse est non.
La solution est de charger les adresses (file path) de toutes les images et d'afficher seulement 6 (ou autre nombre) à la fois. Il ne sert à rien d'afficher les 12 440 images en même temps.
Tu peux aussi utiliser les threads pour éviter le plantage.
Shogo6
Messages postés36Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention17 juillet 2007 18 août 2006 à 21:45
Merci de t'interesser à mon pb!!!!Alors en fait j'ai mis sur la form les scrollbar auto donc on px bien voir toute les images ^^
J'ai essayer d'utiliser les thread mais il me sort une lorsque dans le thread je veux affecter l'image à la picturebox : un truc du genre le thread en cours ne peut pas acceder à un objet (ma picturebox) créer depuis un autre thread...Bon j'ai bien penser à la solution d'afficher 6 images a la fois mais a la base l'effet voulut etait un mur d'image miniatures...Enfin je crois qu'au final je vais me tourner vers cette soltuion!!!Merci en tout cas!!
Les contrôles WinForms (PictureBox, Button, ...) ne sont pas thread-safe. En d'autres termes, ils ne doivent être manipuler que par le thread qui les a créer. Dans le tutorial, Morpion explique comment acceder à des contrôles d'une manière sécuritaire à partir d'un autre thread.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 19 août 2006 à 09:35
Salut, la PictureBox c'est sympa pour afficher 1 ou 2 images sur ta forme, mais c'est un contrôle ça prend de la place en mémoire et beaucoup de code est executé à chaque ajout d'une PB dans ta forme. Si tu developpes une application qui manipule beaucoup d'images, faut envisager de dessiner sois même les images directement sur la forme ou sur un Contrôle. Pour les miniatures tu peux utiliser une ListView.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 20 août 2006 à 15:08
Salut,
Sans parler du fait que le PictureBox est un contrôle, et qu'en tant que contrôle il possède un handle, qui est une ressource limitée.
Si je ne me trompe pas : 65536 par session, 10000 par processus (par défaut, extensible jusque 18000).