IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Drag & Drop et Coordonnées PictureBox


Sujet :

Windows Forms

  1. #1
    Membre expérimenté
    Avatar de mathieugut
    Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 225
    Par défaut [C#] Drag & Drop et Coordonnées PictureBox
    Bonjour à tous,

    Voilà je suis relativemment débutant en C# et je fais face à mon premier problème.

    Je réalise un drag & drop de l'image d'un pictureBox1 à l'intérieur du pictureBox2 et j'aimerai que lorsque je drop l'image, elle reste là où je l'ai droppé car sinon elle va se mettre dans le coin haut en gauche de la pictureBox2...

    Voilà mon code complet(trouvé sur internet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication6
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                pictureBox2.AllowDrop = true;
                pictureBox1.AllowDrop = true;
     
     
            }
     
            //Source PictureBox 
     
            private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
            {
     
                if (e.Button == MouseButtons.Left)
     
                    pictureBox1.DoDragDrop(pictureBox1.Image, DragDropEffects.All);
     
            }
     
     
     
            //Target PictureBox 
     
            //Drag Drop Effects 
     
            private void pictureBox2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
            {
     
     
     
                if (e.Data.GetDataPresent(DataFormats.Bitmap))
                {
     
                    e.Effect = DragDropEffects.Copy;
     
                }
     
                else
     
                    e.Effect = DragDropEffects.None;
     
            }
     
     
     
            //Set the image to be the dragged image. 
     
            private void pictureBox2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
            {
     
                if ((e.Data.GetDataPresent(DataFormats.Bitmap)))
                {
     
                    this.pictureBox1.Image = (Bitmap)(e.Data.GetData(DataFormats.Bitmap));
     
                }
     
            } 
     
     
     
     
        }
    }
    En fait je voudrais que l'image que je copie reste aux coordonnées exactes du drop à l'intérieur du pictureBox2.

    Merci
    Bienvenue dans la matrice, attention à bien lire les règles...

    .::Mon espace perso developpez.com ::.

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    L'appel de la méthode DoDragDrop doit se faire dans l'événement MouseDown et non pas MouseMove.

    [EDIT]
    Pourquoi ne pas créer au moment de l'événement DragDrop une PictureBox à un emplacement relatif à e.X et e.Y dont le Parent est le PictureBox de réception et qui reçoit l'image de l'objet déposé.
    [/EDIT]

  3. #3
    Membre expérimenté
    Avatar de mathieugut
    Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 225
    Par défaut
    J'ai testé avec les deux événements et ça marche pareil...

    Concernant mon problème, je pense que c'est a ce moment là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void pictureBox2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
            {
     
                if ((e.Data.GetDataPresent(DataFormats.Bitmap)))
                {
     
                    this.pictureBox1.Image = (Bitmap)(e.Data.GetData(DataFormats.Bitmap));
     
                }
     
            }
    Que je dois pouvoir récupérer les coordonnés du drop...
    Bienvenue dans la matrice, attention à bien lire les règles...

    .::Mon espace perso developpez.com ::.

  4. #4
    Membre expérimenté
    Avatar de mathieugut
    Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 225
    Par défaut
    Pourquoi ne pas créer au moment de l'événement DragDrop une PictureBox à un emplacement relatif à e.X et e.Y dont le Parent est le PictureBox de réception et qui reçoit l'image de l'objet déposé.
    Interessant en effet, mais comment pourrais-je faire ?

    Merci
    Bienvenue dans la matrice, attention à bien lire les règles...

    .::Mon espace perso developpez.com ::.

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Essais ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
            private void pictureBox2_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.Bitmap))
                {
                    PictureBox picb = new PictureBox();
                    picb.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
                    // Dimension de l'image
                    picb.Size = picb.Image.Size;
                    // Fixer le parent
                    picb.Parent = pictureBox2;
                    // Centrer sur le curseur de la souris
                    picb.Location = pictureBox2.PointToClient(new Point(e.X - picb.Width / 2, e.Y - picb.Height / 2));
                    pictureBox2.Controls.Add(picb);
                }
            }

  6. #6
    Membre expérimenté
    Avatar de mathieugut
    Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 225
    Par défaut
    Ca marche.

    J'etais en train de traffiquer dans le même sens mais je n'aurais jamais trouvé tout cela...

    Merci beaucoup pour tes réponses rapides
    Bienvenue dans la matrice, attention à bien lire les règles...

    .::Mon espace perso developpez.com ::.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  2. Drag and drop d'un picturebox vers un autre
    Par karasnake dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/06/2009, 13h49
  3. Coordonnée souris et drag and drop
    Par matrix_ceg dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/03/2007, 15h38
  4. [VB][drag and drop] 2 fenêtres, 2 picturebox
    Par Bomba dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 22/01/2006, 00h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo