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 :

Location petit probleme


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut Location petit probleme
    bonjour

    je souhaite recuperer par programmation la position d'une picturebox qui est dans une groupbox et cette groupbox est elle meme dans un tabcontrol ...

    voilala ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_iX_Gauche_pic = pictureBox.Location.X + groupBox.Location.X + tabControl.Location.X;
    je recupere donc ce que je veux mais realiser un test en recuperant les coordonnees du curseur que je mets dans edit, je me place aux bordures de l'image et je n'ai pas les memes positions ... une marge d'erreur de 14-15 pxls

    Estce qu'il faut prendre un compte, margin , padding ... je m'y perd un peu ...

    est ce la bordure qui me fait defaut ? :-(

    merci par avance je suis un peu bloqué

  2. #2
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Essayes un truc du genre,au moins si tu dois recuperer des largeurs d autres controles tu peux le faire avec la meme fonction au lieu de te taper a la main tous les controles parents... surtout que tu pourrais en oublier en route... :

    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
     
     
    private void pictureBox1_MouseEnter(object sender, EventArgs e)
    {
        int distance= Distance(pictureBox1, 0);
        MessageBox.Show(distance+ " - " + MousePosition.X);
    }
     
    private int Distance(Control pCont, int pDistance)
    {
     pDistance+= pCont.Left + pCont.Padding.Left;
     if (pCont.Parent != null)
     {
        pDistance= Distance(pCont.Parent, pDistance);
     }
     return pDistance;
    }
    Personnellement j'arrive, qu'importe ou est placée l'image a un résultat bon a 2pixels près...
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    je vois ce que tu me propose mais ce n'est pas tout a fait ce que je recherche ... j'espere avoir une valeur exacte ... estce possible ... ?

    edit: je viens d'essayer ta methode Distance et j'ai un ecart de 7 pxls

  4. #4
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    ... Est ce une impression ou avec cette ligne de code on trouve le bord gauche de la picturebox par rapport au bord de la fenêtre ?

    Attention en récupérant les coordonnées du curseur... Tu fais comment ? Parce qu'elles sont calculées par rapport a l'écran et non au bord gauche de la Form.... si je ne m'abuse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show((-pictureBox1.PointToClient(this.Location).X).ToString());
    oui je me suis rendu compte qu'en fait mon code est une daube parce qu'il ne prend en compte la position de la FORM sur l'ecran et qu'il ne fait pas gaffe aux bordures dsl... Je crois avoir pondu le code le plus pourri que l'on pouvait imaginer lol sincèrement désolé de t'avoir fait un faux espoir )
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    donc ... on est toujours au meme point cest ca ?

    Ouai faut voir la bordure mais je sais pas comment la calculer ...

    ps : ma fenetre est en plein ecran !!!

    avec la somme des location des control parent + le courant comme mon code ... j'aimerais bien savoir pourquoi ca marche pas

  6. #6
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    ... Que penses tu de cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pictureBox1.PointToClient(new Point(0, 0)).X
    Au moins on récupère la distance entre le bord de la pictureBox et l'origine qui est a 0... non ?
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    je viens de tester il faut rajouter le moins devant par contre et malheureusement avec une erreur de 3 pxls on tombe sur le X mais du location de la picture ...

    encore raté

  8. #8
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    Arf j'ai du mal comprendre... J'ai compris que tu cherchais la distance entre le bord gauche de la picturebox et le bord gauche de la fenetre... est ce cela ?

    Si oui je ne comprends pas pourquoi la ligne ne fonctionne pas.... Chez moi j'arrive sur le bon résultat :

    Nom : mousepositionetdistancepicturebox.png
Affichages : 34
Taille : 26,9 Ko

    au niveau du code j'ai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void pictureBox1_MouseEnter(object sender, EventArgs e)
    {
                MessageBox.Show("Mouse : " + MousePosition.X.ToString() + " | distance : " + (-pictureBox1.PointToClient(new Point(0, 0)).X).ToString());
    }
    Donc peut être n ai je pas compris ta demande... Peux tu essayer de reformuler ta demande si c'est le cas... Merci beaucoup.
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Tu as bien compris sauf que moi je recupere pas pareil le MousePosition.X chez toi renvois bien pareil , ok mais le type de MousePosition c'est quoi?

    je sais pas si ta vu mais je jutilise Cursor.Position.X directement .... estce la le probleme ? je ne pense pas car je texplique ton code picture.PointClient( new .... )

    ca me renvoit la coordonnée du point gauche et haut de l'image, mais c'est les meme que location a 3 pxl pres en plus donc ca sert a rien ...

    ce que je recherche cest recuperer les coordonnées de limage ( point haut gauche ) mais par rapport a la fenetre entiere et non pas a linterieur du control parent parce que la cest ce que me retourne ta ligne

    edit : jai essaye le MousePosition.X mais cest pareil que cursor.position.x ca me retourne par rapport a lecran et pas le pointclient ( x ,y ) qui retourne par raport au control parent chez moi

  10. #10
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    comme tu peux le voir :

    Nom : positionpictureboxfenetre.png
Affichages : 32
Taille : 120,0 Ko

    le chiffre renvoyé est bien par rapport au point en haut a gauche de l'écran et non au contrôle parent puisque si la fenêtre est "petite" il me renvoie une distance de 235 par rapport au bord gauche et quand elle est "grande", la taille du conteneur parent ne change pas mais sa position sur la fenêtre si.... Et donc la position renvoyée est plus importante aussi....

    pour info j'ai essayé avec Cursor.Position.X et je récupère également la bonne valeur...

    Pourrais tu envoyé par mail ton projet pour que je teste directement dessus ? parce que la je ne comprends pas pourquoi on arrive pas sur des résultats similaires...
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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