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 :

Problème gestion des handles axes


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Points : 23
    Points
    23
    Par défaut Problème gestion des handles axes
    Bonjour à tous, je me permets de vous écrire car j'ai un problème avec la gestion d'axes dans mon GUI.

    J'ai un GUI possédant 3 axes. Chaque axe possède un menu contextuel, identique pour chaque axe. Ces menus contextuels permettent, par exemple, d'ouvrir une image et de l'afficher dans l'axe (fonction open_image). Voici comment ces menus ainsi que les axes sont programmés :

    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
    27
    28
    menu_contextuel=uicontextmenu;
    
    uimenu(menu_contextuel,'Label','Open image','Tag','open_image_context','Callback',@open_image);
    
    [...]
    
    axes('units','characters',...
        'Parent',findobj('tag','Panel_images'),...
        'position',[3.4 9 29 13.5],...
        'XTick',[],'YTick',[],...
        'uicontextmenu',menu_contextuel,...
        'Tag','axes1');
    
    % Création de l'objet axes2
    axes('units','characters',...
        'Parent',findobj('tag','Panel_images'),...
        'position',[36.2 9 29.0 13.5],...
        'XTick',[],'YTick',[],...
        'uicontextmenu',menu_contextuel,...
        'Tag','axes2');
    
    % Création de l'objet axes3
    axes('units','characters',...
        'Parent',findobj('tag','Panel_images'),...
        'position',[69 9 29 13.5],...
        'XTick',[],'YTick',[],...
        'uicontextmenu',menu_contextuel,...
        'Tag','axes3');
    Et voici la fonction à laquelle le menu fait appel :

    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
    
    function open_image(obj,event)
    
    [...] Code pour la sélection d'un fichier, test du format etc...
    
    switch get(gco,'tag')
               
                
    case 'axes1'
             
    setappdata(findobj('Tag','Master_figure'),'ORIG_IM1',image_chargee); imagesc(image_chargee,'hittest','off');colormap(gray); set(gco,'XTick',[],'YTick' [],'DataAspectRatioMode','manual','DataAspectRatio',[1 1 1]);
    case 'axes2'
    setappdata(findobj('Tag','Master_figure'),'ORIG_IM2',image_chargee); imagesc(image_chargee,'hittest','off');colormap(gray); set(gco,'XTick',[],'YTick',[],'DataAspectRatioMode','manual','DataAspectRatio',[1 1 1]);
    case 'axes3'
    setappdata(findobj('Tag','Master_figure'),'ORIG_IM3',image_chargee); imagesc(image_chargee,'hittest','off');colormap(gray); set(gco,'XTick',[],'YTick',[],'DataAspectRatioMode','manual','DataAspectRatio',[1 1 1]);
    end

    Ce code fonctionne très bien lorsqu'aucune image n'a été encore chargée. J'ai décidé de partir dans la programmation d'une seule fonction et de récupérer le lien de l'axe utilisé. Malheureusement, comme j'utilise la propriété "HitTest", lorsque je décide de charger une nouvelle image, gco ne correspond plus à l'axe utilisé...

    Auriez-vous une solution à mon problème, afin d'avoir un seul menu contextuel défini, partagé par mes trois axes et de faire appel à une seule fonction, tout en étant capable de déterminer de quel axe il s'agit.

    Merci d'avance pour votre aide.

  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 830
    Points
    14 830
    Par défaut
    Il faudrait vraiment qu'on fasse une FAQ sur sujet

    Même problème qu'ici :
    http://www.developpez.net/forums/d94...axe-disparait/

    La presque réponse est ici :
    http://www.mathworks.com/support/sol...ution=1-5BO0I4
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Merci pour la réponse. J'avais fait une recherche sur le forum, mais n'avais rien trouvé.

    Il semblerait qu'il crée un "nouvel axe" ayant les propriétés de l'ancien, mais avec un tag vide.

    Extrait des propriétés de l'axe après affichage de l'image :

    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
     [...]
    	BeingDeleted = off
    	ButtonDownFcn = 
    	Children = [58.0182]
    	Clipping = on
    	CreateFcn = 
    	DeleteFcn = 
    	BusyAction = queue
    	HandleVisibility = on
    	HitTest = on
    	Interruptible = on
    	Parent = [0.0178223]
    	Selected = off
    	SelectionHighlight = on
    	Tag = 
    	Type = axes
    	UIContextMenu = [6.01782]
    	UserData = []
    	Visible = on

    Je n'ai donc pas utilisé la propriétés "Nextplot -> add", mais j'ai ré-initialisé le tag :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(gco,'XTick',[],'YTick',[],'DataAspectRatioMode','manual','DataAspectRatio',[1 1 1],'Tag','axes1');


    Une dernière question : Si je mets la propriété "Nextplot" à "add", est-ce que les images ne seront pas en quelques sortes "empilées" pouvant ainsi crée une surcharge de la mémoire ?

Discussions similaires

  1. Problème gestion des processus
    Par toams69 dans le forum C
    Réponses: 4
    Dernier message: 13/01/2009, 15h34
  2. Problème gestion des évènements avec un JTree
    Par lyaminat dans le forum Composants
    Réponses: 2
    Dernier message: 14/10/2008, 15h44
  3. problème gestion des stocks
    Par dodie84 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 08/05/2008, 12h40
  4. Problèmes gestion des erreurs
    Par <Zer0> dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 01/09/2007, 16h12
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

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