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 :

Probleme pour récupérer le handle d'une image dans un subplot


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Probleme pour récupérer le handle d'une image dans un subplot
    Bonjour,

    je rencontre pas mal de difficultés avec les composants axes dans mon GUI.

    Je vous présente rapidement l'interface que je voudrais faire :
    • Je voudrais réaliser une fenêtre avec une série de 5 images et une autre série de 3 images.
    • La série de 3 images correspond en fait a des images parmi les 5 exposées qui sont "labélisées" par un algorithme, mais l'étiquetage n'est pas toujours parfait et ce GUI doit permettre a l'utilisateur de corriger le cas échéant cet étiquettage, via du drag and drop (prendre une image parmis les 5 et la glisser sur l'image correspondante parmi les 3).
    • Donc, les images doivent etre affichées (je les affiche dans 2 panels différents par un subplot), et je dois récupérer le handle de l'image cliquée et le handle de l'image sur laquelle la précédente est lâchée apres le drag and drop, pour identifier et stocker les changements de labels.

    Le probleme que j'ai constaté pour le moment, c'est que je n'arrive pas a faire correspondre le handle récupéré par le clic de la souris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get(gcf,'CurrentObject')
    avec le handle de mon image dans le subplot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.Im1 = subplot(nIm,1,1,'parent',data.PanelSelectICA), imagesc(Im1)
    Je ne comprend pas pourquoi l'objet récupéré sous le clic de la souris n'a pas le même handle que l'image sur laquelle je clique...

    J'espere que je me suis assez bien exprimé pour cette question ,j'avoue que je suis pas mal dans le flou pour le moment !!

    Merci beaucoup pour toute aide !


    PS : je programme mon GUI a la main et je gere mes données via la méthode "GUIDATA et GUIHANLDES"

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Bonjour,
    Et sais-tu identifier justement à quoi correspond le CurrentObjet au moment où tu cliques sur ton image ?
    As-tu essayé aussi avec gco (a priori ça devrait être la même réponse mais sait-on jamais) ?

    [EDIT]Et surtout quelle est la façon dont tu récupères le clic de la souris (un buttondownfcn ? sur quoi ?)

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    En effet pour le moment je récupere le handle de l'objet cliqué dans le callback de la propriété "WindowButtonDownFcn" de ma figure. C'est dans cette fonction que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get(gcf,'CurrentObject')
    Donc pour moi, le current objet a ce moment la est celui qui est sous le clic de la souris, c'est a dire ici mon image.

    Par contre en effet, en utilisant gco, j'obtiens toutes les propriétés de mon image, et j'ai acces a la propriété "Parent", qui n'est autre que le handle de mon subplot !!! Donc en utilisant ceci :
    je pense que ca devrait passer (j'espere, toujours !)

    Sinon j'ai trouvé des sources pour l'implémentation du drag and drop sur le FEX : http://www.mathworks.fr/matlabcentra...bjectType=file , je vait peut etre tenter d'utiliser ca plutot que de tout refaire, ca ira peut etre plus vite !
    Je vous recontacte si j'ai de nouveau des problemes.

    Merci beaucoup

  4. #4
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    J'ai tenté le drag and drop mais cela ne fonctionne pas et je pense que cela vient de ce que j'ai dit avant :
    en fait pour utiliser le drag and drop je dois le paramétrer en lui disant quels sont les objets qui sont drag (que l'ont peut déplacer) et les objets qui sont drop (sur lesquels on peut déplacer ces premier). On fait donc un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(ddObject,'DragHandles',[Im1, Im2]);
    Mais quand je teste, le rectangle indiquant que l'on déplace l'objet apparait tres loin de l'image sur laquelle je clique (j'ai testé sur des exemples simples et cela fonctionne bien)
    Je pense donc que le probleme vient du fait que le handle de l'image n'est plus celui que j'ai sauvegardé dans ma structure a la création de l'image...
    J'ai testé en mode débeug pour voir les valeurs du currentobject avec le callback de la propriété "WindowButtonDownFcn" de ma figure, et je trouve :
    • dans ma structure guidata : data.Im1 = 86.0219
    • pour handle de l'objet cliqué (Im1) : get(gcf,'CurrentObject') = 87.019
    • gco = 87.019
    • get(gco,'Parent') = 86.0219

    donc voila a priori l'objet que j'obtient en cliquant sur mon image est a priori le fils par rapport a mon image, et vu que ce que j'ai paramétré pour le drag and drop c'est le pere...
    Enfin voila c'est tres embrouillant.

    Si quelqu'un comprend quelque chose merci de m'aider moi je suis paumé

  5. #5
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon a priori le probleme pour le drag and drop venait du fait que j'utilisais différents panels, donc voila si certains dans le futur tentent les joies du drag and drop avec la fonction disponible par le lien que j'ai indiqué, sachez que cela ne fonctionne pas entre plusieurs panel !!
    De plus suite a des problemes je n'utilise plus de subplot mais directement des axes pour afficher toutes mes images (1 axes par image)

    Par contre encore une question : est-il possible de changer l'image affichée par un axes ?
    En fait je voudrai afficher l'image qui est "dragé" dans l'axes qui est "dropé". J'ai essayé comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    img = get(drag,'children')
    set(drop,'children',img)
    j'obtiens alors le message d'erreur suivant :
    ??? Error using ==> set
    Children may only be set to a permutation of itself.

    Quelqu'un sait-il comment faire?

  6. #6
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    c'est bon j'ai trouvé !! (désolé je m'autorépond mais si des fois quelqu'un se pose la même question ne sait-on jamais)
    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(get(drop,'Children'),'CData',get(get(drag,'Children'),'CData'))
    je sais pas si c'est tres "propre" programmatiquement parlant mais cela fonctionne.

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

Discussions similaires

  1. Comment fait-on pour récupérer les infos d'une image
    Par Mario Rousson dans le forum VB.NET
    Réponses: 4
    Dernier message: 30/11/2011, 14h10
  2. Réponses: 2
    Dernier message: 10/01/2008, 17h44
  3. Réponses: 8
    Dernier message: 12/04/2007, 08h53
  4. Récupérer la taille d'une image dans un canevas
    Par Exca dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/12/2006, 12h23
  5. Récupérer la taille d'une image dans un fichier (GIF/JPEG)
    Par SheikYerbouti dans le forum Multimédia
    Réponses: 4
    Dernier message: 12/05/2005, 14h17

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