Dupliquer une picturebox pour en changer la position [Résolu]

Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Dernière intervention
13 juin 2007
- - Dernière réponse : FOcaL69
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Dernière intervention
13 juin 2007
- 13 juin 2007 à 14:52
Bonjour à tous,

je désire créer une ou plusieurs PictureBox à partir d'une PictureBox déjà créée : jusque là pas de problème.
Mon problème vient du fait que j'aimerais que la ou les PictureBox créée(s) ait(ent) une ou des positions différentes de la première.
En gros je crée une pictureBox à la main avec une taille de 164; 19 et une image dedans. Puis je "copie" cette image dans un autre PictureBox :
PictureBox Pic2=new PictureBox();
Pic2 = Pic1;
Et j'aimerais mettre des coordonnées à Pic2 qui soient différentes de Pic1. Mon code actuel :
             //On met l'image 1 à la position 0,0
            this.Pic1.Location = new System.Drawing.Point(0,0);
             //On crée une deuxième picturebox
            PictureBox Pic2=new PictureBox();
             //On renseigne cette nouvelle picturebox
            Pic2 = this.Pic1;
             //On met l'image 2 à la position 100,100
            Pic2.Location = new System.Drawing.Point(100,100);
             //On affiche l'image 2
            Pic2.Show();
             //On met l'image en 1er plan
            Pic2.BringToFront();

En faisant ca l'image 1 et 2 se mettent à la même place (100,100).

J'ai aussi tenté :
          //Position du Pic1
            this.Pic1.Left = 0;
            this.Pic1.Top = 0;
          //Taille du Pic2
            Pic2.Height = 169;
            Pic2.Width = 19;
          //Copie de l'image
            Pic2.BackgroundImage = this.Pic1.BackgroundImage;
          //Position de Pic2
            Pic2.Left=100;
            Pic2.Top = 100;
          //Affichage au 1er plan
            Pic2.Show();
            Pic2.BringToFront();

Sans succès. Je tiens à préciser que c'est bien un BackgroundImage et pas une image. Pour l'instant le fait que ce soit une Image ou une BackgroundImage ne change pas mon probleme.

Merci à tous pour vos réponses.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Dernière intervention
18 octobre 2008
6
3
Merci
Salut,

Dans le premier morceau de code que tu as mis la ligne
Pic2 = this.Pic1;
remplace l'instance référencée par Pic2 par celle de Pic1. Du coup, le new PictureBox() ne sert plus à rien.
Dans les lignes qui suivent, lorsque tu utilises Pic2, c'est comme si tu faisais référence à Pic1 --> ce sont les mêmes objets.
Après avoir créé Pic2, il vaudrait mieux faire :
this.Controls.Add(Pic2);
(à condition que this soit une Form)

Pour le second bout de code, il se pourrait qu'une même instance d'image ne puisse pas figurer dans deux composants différents... mais j'en suis vraiment pas sûr... quelqu'un saurait ?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_niky
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
35
0
Merci
Salut comme le dis Niky, tu t'embrouilles avec les références :

// Là tu as créé une nouvelle PB.
PictureBox Pic2=new PictureBox();
// Là tu viens de 'supprimer' la nouvelle PB pour référencer la première.
Pic2 = Pic1;




Une  image peut être partagée entre plusieurs PictureBox.
Commenter la réponse de Lutinore
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Dernière intervention
13 juin 2007
0
Merci
Effectivement je me suis embrouillé dans les références.

Concernant le this.Controls.Add(Pic2); je vois pas bien comment il va pouvoir prendre l'image de Pic1 mais je cherche.

Sinon : Une  image peut être partagée entre plusieurs PictureBox.
Oui mais comment? Je souhaite le faire en code et pas "à la main".
Commenter la réponse de FOcaL69
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Dernière intervention
13 juin 2007
0
Merci
Ok le add permet d'ajouter le PictureBox au form.
Mais j'arrive toujours pas à copier l'image dans Pic2 :
            PictureBox Pic2 = new PictureBox();
            Pic2.Image = this.pictureBox1.Image;
            this.Controls.Add(Pic2);
            Pic2.Location = new System.Drawing.Point(0, 0);
            Pic2.Show();

Sachant que Pic1 n'est pas en 0,0 (je préfère préciser).
Commenter la réponse de FOcaL69
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Dernière intervention
13 juin 2007
0
Merci
Si ca y est !!!!
C'est juste que j'avais oublié que j'utilisais des background .
Merci pour l'aide.

Ps : le code ci-dessus marche en fait à condition d'uiliser des Image et pas des BackGroundImage.
Commenter la réponse de FOcaL69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.