Dupliquer une picturebox pour en changer la position

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

5 réponses

cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
13 juin 2007 à 13:21
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 ?
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
13 juin 2007 à 13:45
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.
0
FOcaL69 Messages postés 5 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 13 juin 2007
13 juin 2007 à 14:35
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".
0
FOcaL69 Messages postés 5 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 13 juin 2007
13 juin 2007 à 14:49
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).
0

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

Posez votre question
FOcaL69 Messages postés 5 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 13 juin 2007
13 juin 2007 à 14:52
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.
0