Bonjour,

J'ai réalisé une interface graphique permettant d'importer un fichier, de le traiter et de pouvoir afficher certains résultats.

J'ai créé plusieurs boutons poussoirs, chacun d'entre eux me permettant d'afficher un type de donné. Cependant, je souhaiterais les remplacer par un seul et même bouton, qui m'afficherait tous ces résultats dans la même figure, mais sous différents onglets. J'ai trouvé un morceau de code sur le net qui permet de réaliser les onglets :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 hg=uitabgroup;
 ht(1)=uitab(hg,'Title',onglet1');
 ht(2)=uitab(hg,'Title','onglet2');
 
 axes('parent',ht(1));
 plot(1:5,5:9)
 axes('parent',ht(2));
 plot(1:3,5:7)
Ce morceau de code fonctionne très bien. Néanmoins, quand je remplace les "plot" par mes propres fonctions, ça ne marche plus (alors que ces dernière fonctionne correctement). Je ne sais pas exactement ce que j'ai loupé en route...

Voici la fonction se trouvant dans le code principal de mon interface, c'est le callback du bouton poussoir dont je vous ai parlé.

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
 
function joints_plus_BC(obj,event)
afficher_grains_detectes_superposes_sur_carto_BC(BC,critere_modifie);
 
 %test : créer une seule figure mais avec différents onglets/ début
figure;
 hg=uitabgroup;
 ht(1)=uitab(hg,'Title','grains + BC');
 ht(2)=uitab(hg,'Title','grains + Euler');
 
 axes('parent',ht(1));
afficher_grains_detectes_superposes_sur_carto_BC(BC,critere_modifie);
 axes('parent',ht(2));
afficher_grains_detectes_superposes_sur_carto_Euler(BC,critere_modifie);
 
% test /fin
 
 
    end
Et voici une des 2 fonctions appelées :
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
 
function[] = afficher_grains_detectes_superposes_sur_carto_BC(BC,L)
 
 
Km=BC;
 
for i=1:size(BC,1)-1
   for j=1:size(BC,2)-1
       if(L(i,j)==0)
         Km(i,j,1:3)=[255 0 0] ;
       else
         Km(i,j,1:3)=BC(i,j) ;
      end
  end
end
 
figure, 
imshow(Km/255);
Si quelqu'un a une idée...

Merci d'avance et bonne journée!
J.