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

C# Discussion :

[Debutant] Obtenir la position de la souris.


Sujet :

C#

  1. #1
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut [Debutant] Obtenir la position de la souris.
    Voilà, encore un de plus ( je me sens complètement c**)

    Mon problème cette fois est le suivant. J'ai trouver comment faire pour dessiner sur mon image. Le problème est que les coordonnées ne correspondent pas. Lorsque je dessine un trait, il prend les position de la souris dans la fenêtre et placent celles-ci dans le picturebox.

    Je m'explique, je sélectionne l'option pour dessiner un trait sur mon image avec la fonction suivante: ( je change simplement le curseur )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private void _pnlobTrait_Click(object sender, EventArgs e)
            {/*
                Graphics g = _pbImage.CreateGraphics();
                Pen Pinceau=new Pen(Red,2);
                */
                Cursor.Current = Cursors.Cross;
                /*
                g.DrawLine(Pinceau, new Point(MousePosition.X, MousePosition.Y), new Point(0, 0));
                g.Dispose();
                Cursor.Current = Cursors.Default;*/
            }
    Alors, lorsque je suis dans ma picturebox et que j'enfonce le bouton de la souris, j'appel le code : (je recupère la premier position du clic )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private void _pbImage_MouseDown(object sender, MouseEventArgs e)
            {
                Pos1X = Cursor.Position.X;
                Pos1Y = Cursor.Position.Y;
            }
    Et quand je relâche le bouton de la souris: (je recupère la deuxième position du clic)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            private void _pbImage_MouseUp(object sender, MouseEventArgs e)
            {
                Pos2X = MousePosition.X;
                Pos2Y = MousePosition.Y;
     
                Cursor.Current = Cursors.Default;
     
                Graphics g = _pbImage.CreateGraphics();
                Pen p = new Pen(Color.Red, 2);
     
                g.DrawLine(p, new Point(Pos1X, Pos1Y), new Point(Pos2X, Pos2Y));
                g.Dispose();
            }
    Par contre, les coordonnées qu'il prend lorsque je fait le _pbImage_MouseDown(), sont les coordonnées dans toute la fenêtre, et quand je fait le _pbImage_MouseUp(), il récupère encore un fois les coordonnées de la souris dans la fenêtre en entier. Par contre, quand il va dessiner le trait, il utilise le point d'origine de la pictureBox.

    Maintenant, j'aurais aimer savoir si il existe une autre façon de redessiner mon trait que en faisant un calcul qui prendrait en compte toute la fenêtre. Ou alors est ce que je dois placer toute ma fenêtre en objet Graphics? Le problème je pense en effectuant cette dernière solution est que je pourrait dessiner en dehors de ma pictureBox, ce que je ne veux pas pouvoir faire.

    Quelqu'un pourrait-il me guider?

    Merci d'avance, Richard_sraing

  2. #2
    Membre éprouvé Avatar de Mourad
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 152
    Par défaut
    salut, je ne suis pas expert System.Drawing mais je sais que tous les controles ont une méthode : PointToClient et PointToScreen aui permettent respectivement de converir les coordonnées d'un point relativement au controle et à l'écran
    je pense que là je t'ai mis sur la bonne voie

  3. #3
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    J'ai trouver grâce a un ami.

    En fait, je devais utiliser le:

    Et dans e, il suffisait de récupérer le X et le Y.

    Merci pour votre aide, j'espère que si quelqu'un rencontre la même bétise que moi, ce petit post pourra l'aider.

    Bonne journée et bon week-end, Richard_sraing

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

Discussions similaires

  1. Obtenir la position de la souris
    Par gingman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/03/2006, 18h38
  2. Position de la souris
    Par abcd dans le forum Langage
    Réponses: 10
    Dernier message: 31/03/2005, 18h09
  3. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02
  4. Déterminer la position de la souris
    Par genteur slayer dans le forum Composants VCL
    Réponses: 6
    Dernier message: 16/06/2003, 11h01
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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