none
Pb valeurs x,y pointeur souris RRS feed

  • Question

  • Dans une pictureBox je traite l'évènement MouseMove.

    Ma pictureBox fait 640x480.

     

    Donc le :

    MouseEventArgs.X devrait être compris entre 0 et 639

    et le

    MouseEventArgs.Y devrait être compris entre 0 et 479

     

    Malheureusement j'ai des valeurs justes au delà du style 640 et 480 ainsi que des valeurs négatives.

     

    Mon application se bloque car j'utilise les valeurs du pointeur dans une liste

    mais en regardant la pile des appels je vois que l'erreur est déjà présente dans les paramètres de l'appel à MouseMove.

     

    Y-a-t-il une subtilité qui m'échappe ?

    lundi 29 décembre 2008 11:05

Réponses

  • Bonjour bulbuzor,

    Il suffit de vérifier la position du curseur


    if  (MousePosition.X > Coordonnee_debut_surface &
    MousePosition.X < Coordonnee_fin_surface & MousePosition.Y > Coordonnee_haut_surface & MousePosition.Y < Coordonnee_bas_surface)
    {
    //code
    }
    else
    {
    //ne rien faire car hors du cadre
    }

    cela si ton controle a une taille fixe
    sinon


    if  (MousePosition.X >
    controle.X & MousePosition.X < controle.X+controle.width & MousePosition.Y > controle.Y & MousePosition.Y < controle.Y+controle.height)



    j'espère que cela t'aidera.
    a++

    mardi 30 décembre 2008 17:54

Toutes les réponses

  • Après vérifications, j'ai remarqué que ma pictureBox reçoit encore des messages d'évènements MouseMove quand je laisse le doigt appuyé sur le bouton de la souris. (excusez-moi je débute).

    Mais le mystère reste entier :

     

    comment traiter les messages MouseMove uniquement lorsque le pointeur de souris se trouve sur la surface du control concerné ?

     

    Merci.

    lundi 29 décembre 2008 13:52
  • Bonjour bulbuzor,

    Il suffit de vérifier la position du curseur


    if  (MousePosition.X > Coordonnee_debut_surface &
    MousePosition.X < Coordonnee_fin_surface & MousePosition.Y > Coordonnee_haut_surface & MousePosition.Y < Coordonnee_bas_surface)
    {
    //code
    }
    else
    {
    //ne rien faire car hors du cadre
    }

    cela si ton controle a une taille fixe
    sinon


    if  (MousePosition.X >
    controle.X & MousePosition.X < controle.X+controle.width & MousePosition.Y > controle.Y & MousePosition.Y < controle.Y+controle.height)



    j'espère que cela t'aidera.
    a++

    mardi 30 décembre 2008 17:54