Dupliquer une picturebox pour en changer la position

Résolu
Signaler
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 juin 2007
-
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 juin 2007
-
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.
A voir également:

5 réponses

Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
7
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 ?
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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.
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 juin 2007

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".
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 juin 2007

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).
Messages postés
5
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 juin 2007

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.