Comment mettre plusieurs images bout à bout dans un picturebox ?

cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012 - 21 janv. 2011 à 11:56
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 23 janv. 2011 à 15:47
Bonjour, j'ai plusieurs images JPG qui ont toutes les mêmes dimensions hauteur et largeur.

Je souhaite les mettre bout à bout dans un seul picture box. J'incrémenterai donc à chaque fois la taille du picturebox à chaque ajout d'une image dedans mais le soucis est que je ne trouve pas le moyen d'y copier bout à bout mes images. Quelles sont les instructions à utiliser ?

Mes images à copiées sont chargées dans des picturesbox, mais je peux les charger dans un imagebox si besoin.

Merci pour votre aide.

30 réponses

scoval Messages postés 11 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 21 janvier 2011
21 janv. 2011 à 12:43
bonjour

si tu modifie la longueur de ta picturebox pourquoi tu ne peut simplement pas créer une nouvelle picturebox avec ta nouvelle image à coté de celle que tu as déjà ?

cordialement


_____________________________________________________________________________

Je suis un petit débutant qui deviendra bientôt un grand avertis
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 13:44
non en fait la taille de lapicture box ne change pas, enfin du moins pour la propriété WIDTH. Par contre il va falloir qu'elle adapte la propriété SCALEWIDTH pour que tout tienne dedans, mais bien sur visuellement ce sera plus petit.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 13:56
Bonjour,

La propriété Picture d'un PictureBox ne peux contenir qu'une seule image. Alors soit tu te créés une image contenant toutes celles que tu voudrais afficher (mais j'imagine que cela ne te convient pas surtout si le nombre d'images est inconnu).

Dans ce cas, tu imbriques dans ta pictureBox autant de contrôles PictureBox ou Image que de photos à insérer en gérant leurs coordonnées.

Perso' je préfèrerais des contrôles Image plus léger.

Calade
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 14:14
ben si,j'arrive à mettre bout à bout mes images (lues dans une boucle)

Picture1.PaintPicture Picture7.Picture, depart_image, 0, taille_image, 975, 0, 0, taille_image, 975

depart_image est incrémenté à chaque fois de la taille de l'image

Le soucis est que je dois tout afficher dans le picturebox sans avoir à redimensionner celui ci.

Il faut donc qu'à chaque nouvel ajout d'une image, que l'interieur du picturebox se réduise pour que toutes les images devenues plus petites tiennent dedans.
0

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

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 14:19
Il faut donc qu'à chaque nouvel ajout d'une image, que l'interieur du picturebox se réduise pour que toutes les images devenues plus petites tiennent dedans.


Tu veux dire qu'avec 1 image, celle-ci occupe l'intégralité de ta PictureBox, avec 2 chacune occupe la moitié, etc...

Si c'est cela, il te faut à chaque insertion réafficher toutes tes photos en tenant compte du nombre de celles-ci, mais ce que j'ai dit dans mon précédent post reste valable.
Calade
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 14:35
"Tu veux dire qu'avec 1 image, celle-ci occupe l'intégralité de ta PictureBox, avec 2 chacune occupe la moitié, etc... "

oui c'est ce que je veux faire. Pour l'instant elles s'affichent toutes bout à bout mais finissent par dépasser la largeur du picture box, moi ce que je veux c'est qu'elles se redimenssionnent toutes pour tenir dedans.

Je charge chaque image dans un picture unique (affichées une par une dans une boucle), et je copie l'image en cours dans le picture qui doit toutes les contenir.

Je pensais que la propriété SCALEWIDTH permettait de réduire le contenu d'un picture box,mais il semble que non, car il ne change rien du tout.

Misère c'est la galère.
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 14:39
la solution pourrait être de redimensionner chaque image avant qu'elle ne soit copiée dans dans le picture qui doit toutes les contenir,plutot que de redimensionner le picture qui les contient toutes.

Il me suffit de calculer leur taille par rapport à leur nombre, mais je ne sais pas non plus comment redimensionner une image en lui fixant un rapport taille/largeur
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 14:39
En tout état de cause une PictureBox ne peut contenir qu'UNE SEULE Picture, sauf comme je l'ai déjà dit à utiliser autant de contrôle Picture/Image contenu dans ton contrôle Picture Initial qui ne servirait ici que de contrôle conteneur.


Calade
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 14:44
Connais-tu le nombre d'images à l'avance ?


Calade
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 14:51
oui,je connait lenombre d'image à l'avance.

J'ai aussi testé avec une image et la fonction STRETCH à true, dans le controle image je peux redimensionner chaque image en plus petit mais une fois recopiée dans le picturebox avec paintpicture elles reprennen leur taille normale, erf çaaurait été trop simple.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 15:00
Le contrôle Picture ne possède pas de propriété Stretch.

Pour ton cas je pense que le plus simple est de diviser la largeur et la hauteur de chaque image par leur nombre. Puis tu les insère chacune dans un contrôle Image dont la propriété Stretch sera modifié (je ne me rappelle jamais quelle est la valeur pour retailler la photo, il te suffit de tester, tu as 1 chance sur 2) et les Width et Height selon les résultats de tes divisions. Chaque contrôle image devra être positionné précisément là aussi par calcul soit à l'intérieur de ta PictureBox initiale soit directement sur ta Form.


Calade
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 15:18
oui mais je connait certes le nombre d'image recuépéré dans une variable mais je ne peux pas savoir avant d'executer mon programme, combien d'images seront créées, donc je ne peux pas mettre d'avant les controles images censés afficher chaque image.

A moins qu'en VB il soit possible de créer des occurences d'un controle existant (des copies multiples avec des propriétes propres, d'un controle image placé), mais j'en doute .
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
21 janv. 2011 à 15:20
Bonjour,

Une autre piste avec 2 contrôles :

Tu dimensionnes le premier contrôle avec une largeur de x images.

Tu importes dans le deuxième chaque image que tu recopies à tour de rôle dans le premier à la nouvelle position en utilisant Bitblt ou PaintImage.

Cheyenne
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
21 janv. 2011 à 15:22
Bonjour,

Une autre piste avec 2 contrôles :

Tu dimensionnes le premier contrôle avec une largeur de x images.

Tu importes dans le deuxième chaque image que tu recopies à tour de rôle dans le premier à la nouvelle position en utilisant Bitblt ou PaintImage.

Cheyenne
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 15:27
@Cheyenne Perso', cela me parait bien compliqué d'utiliser des API.

Mais pour ma gouverne qu'est-ce que PaintImage ?

Je ne le connais pas en VB6 et ne l'ai trouvé ni dans le MSDN ni dans l'aide .NET ?

@lechti62

A moins qu'en VB il soit possible de créer des occurences d'un controle existant (des copies multiples avec des propriétes propres, d'un controle image placé), mais j'en doute .


Si tu utilises bien VB6 (et non VBA) tu as la propriété Index qui fait exactement ça.

Calade
0
cs_lechti62 Messages postés 161 Date d'inscription vendredi 8 mars 2002 Statut Membre Dernière intervention 8 mars 2012
21 janv. 2011 à 15:30
bon, je vais voir car j'ai trouvé un autre solution et ça fonctionne

en fait je copie chaque image dans un controle Picturebox, mais ensuite je transferre l'image de celui ci dans un Imagebox avec la fonction Stretch=true et c'est donc l'imagebox dont je me sert et comme ça j'obtient le resultat que je voulait
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 15:36
en fait je copie chaque image dans un controle Picturebox, mais ensuite je transfère l'image de celui ci dans un Imagebox


Je n'en vois vraiment pas l'intérêt si ce n'est celui d'alourdir inutilement ton code.


Calade
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
21 janv. 2011 à 15:44
@Calade,

Non ce n'est pas compliqué les API.

J'ai envoyé une autre solution avec 2 contrôles, comme tu le fais, mais en utilisant StrechtBitBlt au lieu de BitBlt.
Mais le post n'a pas l'air d'être présent, j'ai dû faire un fausse manip !

PaintImage, c'est un lapsus je voulais dire Paint.Picture, décidément, ce n'est pas le bon jour...

Ta solution est plus simple.

Bonne prog.

A+ Cheyenne
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 15:46
@Cheyenne
Non ce n'est pas compliqué les API.

Je suis entièrement d'accord avec toi, j'ai simplement dit que ça l'était dans ce cas précis.


Calade
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
21 janv. 2011 à 16:25
@Calade

Je ne veux pas polémiquer, mais tu ne l'as pas dit explicitement. C'était un sous-entendu...

Quand je dis que ce n'est pas le jour, HI

Amicalement de Cheyenne
0
Rejoignez-nous