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

Interfaces Graphiques Discussion :

Récupération dynamique du pointeur d'une surface lors du passage de la souris


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récupération dynamique du pointeur d'une surface lors du passage de la souris
    Bonjour à tous,

    Mon objectif : Dans une figure qui contient plusieurs surfaces, je souhaite récupérer l'ID de la surface lorsque le curseur de la souris passe dessus sans cliquer.

    J'ai créé le petit programme suivant :
    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
     
    function main
     
    % création de la figure mère avec callback sur
    % la sous-fonction "event_motion" qui sera executée
    % chaque fois que la souris bouge dans la fenetre
    sf_motion=@event_motion;
    handlefig=figure();
    set(handlefig,'WindowButtonMotionFcn',sf_motion);
     
    % création d'une premiere surface
    [x,y]=meshgrid([1,3],[1,4]);
    surface(x,y,meshgrid([1,1],[1,1]),2);
    % création d'une seconde surface
    [x,y]=meshgrid([2,2.5],[2,2.5]);
    surface(x,y,meshgrid([1,1],[1,1]),2.1);
     
    end
     
    function event_motion(src,evnt)
     
    get(gcf,'currentpoint')
    GCO %récupère l'identifiant de l'objet graphique courant
    get(GCO,'type')
     
    end
    Ce petit programme me fourni bien les coordonnées du curseur de la souris à tout moment dès lors que la souris bouge. Ensuite comme on peut le voir avec "GCO" et "get(GCO,'type')" j'essaye, également à chaque instant, de récupérer l'ID de l'objet graphique sous le curseur ainsi que le "type" de cet objet. Donc quand mon curseur est sur le bord de ma figure, je devrais voir dans l'invite de commande matlab "figure", puis lorsque je bouge mon curseur pour survoler une surface, je devrais voir s'afficher "surface" dans l'invite de commande matlab. Cependant l'ID ne se met pas a jour et donc "GCO" fournit toujours le même identifiant. Par contre, si je clique avec l'un ou l'autre des boutons de ma souris, cet ID se met a jour, et le programme fonctionne comme je l'attends. Comme si l'action de cliquer génère un événement interne qui rafraichit les donnés. Je pense donc qu'il manque dans ma fonction "event_motion" une simple fonction de mise a jour des données, mais laquelle?

    L'objectif à terme sera de passer la surface que le curseur survole en surbrillance et d'autre chose bien sur.

    D'avance merci à vous.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce n'est pas un problème de mise à jour, la fonction gco retourne l'objet graphique qui a le focus, et c'est justement le clic de la souris qui fait ce changement.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse,

    Oui oui c'est ça, mais ce n'est pas le clic de la souris qui provoque le changement, le clic de la souris engendre une suite d'événement dont l'un d'eux rend effectif le changement. Ce que je cherche c'est de provoquer cet événement directement dans mon programme à chaque éxécutions de "event_motion".

  4. #4
    Invité
    Invité(e)
    Par défaut
    L'évènement c'est le clic lui même, il fait de l'objet qui est dessous au moment du clic l'objet courant. De même que tu cliques sur un edit avant de pouvoir taper du texte.
    Tu peux regarder la fonction setfocus du FEX pour le simuler, et notamment la dll associée.
    Ou regarder cette discussion.
    Dernière modification par Invité ; 22/05/2011 à 21h28.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    comme le signale un commentaire de 'setfocus', semblerait faire la même chose.
    En revanche, je ne suis pas sûr que cela aide fyfy0 puisqu'il ne connait pas le handle uich en question mais qu'il veut le récupérer...

    en fait la question est : quand on clique sur un objet graphique, comment matlab identifie l'objet sur lequel on a cliqué pour mettre 'gco' à jour ? Si on sait répondre à cette question, on sait simuler le clique sur l'objet en question, ou plutot dans le cas présent, juste récupérer le handle de l'objet. Désolé mais je n'ai pas la réponse... Mais ca m'intéresse également

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je t'ai dit de regarder notamment la dll associée, pas d'utiliser la fonction, une simple insertion de mouseclick simule le clic (reste à savoir si elle marche sur ton OS, sur Vista, c'est la cas). Sinon le code Java contenu dans mon deuxième lien le fait aussi.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup Winjerome pour tes propositions. Je les ai testées et cela fonctionne relativement correctement. Mais je reste persuadé qu'une solution plus fine existe, une solution sans simuler un clique. Je continu de chercher quand j'aurai un moment, si je trouve je vous tiens au courant.

Discussions similaires

  1. [FAQ] Comment remplacer une image par une autre lors du passage de la souris ?
    Par Invité dans le forum Contributions JavaScript / AJAX
    Réponses: 2
    Dernier message: 03/03/2013, 22h48
  2. [XL-2007] Récupération dynamique de valeur d'une cellule
    Par berceker united dans le forum Excel
    Réponses: 2
    Dernier message: 27/04/2012, 11h05
  3. Afficher une image lors de passage de la souris
    Par lx69xl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/12/2011, 23h48
  4. accorder une action lors du passage de la souris sur une zone de l'image
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 29/09/2010, 20h19
  5. Masquer une forme lors du passage de souris
    Par gilles641 dans le forum Langage
    Réponses: 7
    Dernier message: 15/07/2005, 17h07

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