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

FOcaL69 5 Messages postés mardi 11 janvier 2005Date d'inscription 13 juin 2007 Dernière intervention - 13 juin 2007 à 12:12 - Dernière réponse : FOcaL69 5 Messages postés mardi 11 janvier 2005Date d'inscription 13 juin 2007 Dernière intervention
- 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
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 13 juin 2007 à 13:21
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 ?

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_niky
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 13 juin 2007 à 13:45
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
FOcaL69 5 Messages postés mardi 11 janvier 2005Date d'inscription 13 juin 2007 Dernière intervention - 13 juin 2007 à 14:35
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
FOcaL69 5 Messages postés mardi 11 janvier 2005Date d'inscription 13 juin 2007 Dernière intervention - 13 juin 2007 à 14:49
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
FOcaL69 5 Messages postés mardi 11 janvier 2005Date d'inscription 13 juin 2007 Dernière intervention - 13 juin 2007 à 14:52
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.