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 :

"Fusion" de figure dans une interface graphique


Sujet :

Interfaces Graphiques

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut "Fusion" de figure dans une interface graphique
    Bonjour,

    voilà quand je clique sur les boutons de mon interface graphique, j'aimerait que les figures s'affichent dans le même graphe, car pour le moment elles s'affichent dans des fenêtres différentes.

    Je ne sais pas si je peux faire un programme du style:
    if string=Modélisation % nom de mon appel
    figure= gcf
    ...

  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
    Quelle est la commande que tu utilises pour créer tes nouveaux "graphes" ?

    Attention au vocabulaire :
    En Matlab une figure c'est ... et bien ... un objet de type figure.
    Un graphe c'est un objet de type axes qui est forcément dans un objet figure (voir le tutoriel sur les objets graphiques)

    Si tu veux "plotter" plusieurs lignes sur un même axe, il suffit d'utiliser la commande :
    Je te déconseille en tout cas :
    car figure est une fonction built-in de Matlab.

    Qu'essayes-tu de faire avec cette commande ?
    Règles du Forum

    Adepte de la maïeutique

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Voilà mon code:
    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
    %Créer l'axe en précisant sa position et dimension en pixels
    a = axes('Units', 'pixels', 'Position', [350 175 350 350]);
     
    %/////////////////////////// Modélisation de la prostate///////////////////
     
       % A l'aide du Fast marching 3D   
    uicontrol(f, ...   % on crée un objet 'interface utilisateur' dans la fenetre f
      'Style', 'pushbutton', ... % de type Bouton
      'String', 'reconstruction_3D_prostate', ... % Applique l'algorithme
      'Position', [50 575 150 25], ... % position dans la fenetre et dimension
      'Callback', 'reconstruction_3D_prostate');  % l'action associée
     
    % autre modélisation... 
     
    %////////////////////////////Modélisation du cancer////////////////////////
     
    uicontrol(f, ...   % on crée un objet 'interface utilisateur' dans la fenetre f
      'Style', 'Text', ... % de type Bouton
      'Position', [20 250 200 150], ... % position dans la fenetre et dimension
      'BackgroundColor', [1 1 1] ,...
      'String','MODELISATION CANCER');  % texte
     
       %IRM
    uicontrol(f, ...   % on crée un objet 'interface utilisateur' dans la fenetre f
      'Style', 'pushbutton', ... % de type Bouton
      'String', 'IRM', ... % Applique l'algorithme
      'Position', [80 350 75 25], ... % position dans la fenetre et dimension
      'Callback', 'IRM');  % l'action associée
    En fait, j'aimerais que quand l'utilisateur clique sur un bouton toutes les figures se supperposent dans "a" (=axe)

    Car pour le moment quand l'utilisateur clique sur un bouton pour la seconde fois, la 1ère figure s'efface.

  4. #4
    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
    Tout ça ne me dit pas vraiment quelle commande tu utilises pour le tracé...
    En gros ce qu'il y a dans les actions de tes boutons.
    As-tu essayé le hold on ? (à placer après la définition des axes)

    Sinon pour la plupart des commandes de tracé (comme plot) tu peux en général mettre le handle de l'axe de destination en paramètre (voir l'aide).
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Pour la structure conditionnelle, tu pourrais utiliser un SWITCH-CASE dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch str
     
       case 'reconstruction_3D_prostate'
       <tracer 'reconstruction_3D_prostate'>
     
       case 'MODELISATION CANCER'
       <tracer 'MODELISATION CANCER'>
     
       case 'IRM'
       <tracer 'IRM'>
     
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    re, vraiment désolée de te déranger.

    Par exemple:
    - Le bouton reconstruction_3D_prostate, permet de reconstruire la prostate à partir d'imae IRM à l'aide d'un algorithme
    - Le bouton IRm, reconstruit un cancer à l'aide de l'algorithme de Delaunay

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Merci pour vos réponses, je vais essayer...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    j'arrive "parfois" à afficher les images dans la même fenêtre avec ce code:
    switch a
    case 'reconstruction_3D_prostate'
    disp('reconstruction_3D_prostate')

    case 'IRM'
    disp ('IRM')

    end
    Je m'explique:
    Mon problème est que si je commence par cliquer sur 'reconstruction_3D_prostate' puis 'IRM', l'image issue de IRM remplacera celle issue de 'reconstruction_3D_prostate'.

    Mais si je fais l'inverse: image 'irm' puis 'reconstruction_3D_prostate', les 2 images se supperposent.
    Je ne comprends pas mon erreur...

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Peux-tu nous dire, dans chaque cas, le nom des fonctions que tu utilises pour afficher les données (PLOT, SURF, IMAGE, ...)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    pour:
    - 'reconstruction_3D_prostate'
    if plot_isosurface
    S = smooth3(S,'gaussian',5,1);
    F = isosurface( S,0.5 );
    p = patch(F);
    isonormals( S, p );
    set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
    end


    box on;
    set(gca, 'XTick', []);
    set(gca, 'YTick', []);
    set(gca, 'ZTick', []);
    lighting phong;
    alpha(0.5);
    camproj('perspective');
    view(3);
    axis equal;
    axis([1 size(W,1) 1 size(W,2) 1 size(W,3)]);
    daspect([1 1 1]);
    cameramenu;
    camlight;
    zoom on;

    hold on;
    - 'IRM':
    T = delaunay3(M(:,1),M(:,2),M(:,3)); %algo delaunay
    x1=M(:,1);
    y1=M(:,2);
    z1=M(:,3);
    M = [x1,y1,z1];
    tetramesh(T,M,'facecolor',[0 1 0]);% cancer remèché
    -'Biopsie'
    [filename, pathname] = uigetfile('*.fig','Select the cancer figure');

    fn = fullfile(pathname, filename);
    f = hgload(fn);
    MAintenant j'arrive à "fusionner" les images IRM et reconstruction 3D, mais pour biopsie, ça s'affiche dans une autre fenêtre.

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Quand tu utilises HGLOAD, l'objet f est un objet de type Figure, non ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    oui quand j'utilise "hgload", l'objet est une figure

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Donc Matlab crée inévitablement un nouvel objet Figure à chaque fois que tu appelles 'Biopsie'
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Et donc on ne peux rien faire...
    il faut donc que je change de méthode?

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Citation Envoyé par pouette13
    il faut donc que je change de méthode?
    Seulement pour 'Biopsie' mais la, on peut difficilement t'aider.

    Ce que je ne comprends pas, c'est pourquoi tu utilises HGSAVE/HGLOAD
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    En fait j'utilisais hgload pour pouvoir ouvrir l'image sélectionner par l'utilisateur... car je ne voyais pas d'autres méthodes.

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Pourquoi avoir enregistré 'Biopsie' en .fig ?

    Si tu voulais uniquement sauvegarder l'image, il aurait peut être fallut utiliser IMWRITE et GETFRAME comme ceci : How can I print only the axes of my figure?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  2. zoom dans une interface graphique type gui
    Par oregos dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/04/2007, 12h45
  3. appel d'un binaire systeme dans une interface graphique
    Par elbronziero dans le forum Tkinter
    Réponses: 4
    Dernier message: 18/04/2007, 10h01

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