Bonjour à tous ,
Voilà, je dois réaliser une interface graphique et je dois vous avouer que j'ai un peu de mal..
Idéalement, ce que j'aimerais faire serait "ouvrir un dossier" (grâce à l'icone que j'ai mise en haut) , puis sélectionner un dossier contenant tous mes patients afin de charger .
Je suis donc allé dans ma fonction " function uipushtool1_ClickedCallback(hObject, eventdata, handles) " , puis j'y ai écrit " uigetdir " etc, ma fonction de récupération à partir du dossier de patient, qui stocke à chaque itération dans ma variable results{} les scan pour chaque patient.
Je pensais à utiliser guidata mais il me semble que c'est plutôt pour le stockage d'objet.
J'ai ajouté à la fin de ma boucle dans "function uipushtool1_ClickedCallback(hObject, eventdata, handles) " :
Maintenant que j'ai récupéré mes patients dans ma listbox, j'aimerais, relier le fait de cliquer sur un patient, avec l'affichage de son scanner ( avec slider ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 handles.results = results; handles.patientslist = patientslist; for i=1:length(patientslist) if ~(strcmp(patientslist(i).name,'.') | strcmp(patientslist(i).name,'..') | strcmp(patientslist(i).name(1),'R')) ca{i} = patientslist(i).name; end end set(handles.listbox2,'String',ca);
Je possède une fonction " figure = display_myCT()" prennant en entrée les triplets RGB de tous les patients, et le numéro du patient. La finalité étant d'afficher dans une figure, le scan avec le slider.
Le problème étant que je travaille avec GUIDE et j'ai donc généré un axe, mais je n'arrive pas à faire le lien entre GUIDE et ma fonction d'affichage. Idéalement, j'aimerais l'inclure dans mon code guide. Mais je vous avouerais que je n'ai pas trop d'idées pour comment gérer le fait que dans ma fonction je crée une nouvelle figure, etc , j'aimerais simplement relier l'affichage à mon axe, selon le patnum ( déterminer par l'indice de l'item dans ma listbox ).
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 function h_fig = display_myCT(StructRGB,numpat) numpat = numpat + 2; %%%%%%%%%%%%% % figure %%%%%%%%%%%%% sz = length(StructRGB(numpat,:)); h_fig = figure('Name','image and layers','NumberTitle','Off','Toolbar','figure',... 'MenuBar','figure','NextPlot','Add'); sl_min = 1; sl_max = sz; sl_val = ceil(sz/2); h_slider = uicontrol(h_fig,'style','slider','Min',sl_min,'Max',sl_max,'Value',sl_val,... 'SliderStep',[1/sl_max 1/sl_max],'units','normalized','Position',[0 0 0.9 0.05],... 'Callback',@ResultsSliderCallback); h_text = uicontrol(h_fig,'style','text','units','normalized','String',num2str(sl_val),... 'Position',[0.9 0 0.1 0.05]); hx(1) = axes('parent',h_fig,'Units','Normalized','OuterPosition',[0.0 0.2 0.7 0.7]); %%%%%%%%%%% function ResultsSliderCallback(hObject,eventdata) cur_serial = ceil(get(hObject,'Value')); set(h_text,'String',num2str(cur_serial)); mysubplot(hx(1),StructRGB{numpat,cur_serial},cur_serial); end function mysubplot(hx,MonImageRGB,cur_serial) if cur_serial==0 return; end h_curCurve = findobj([get(hx,'Children');get(h_fig,'Children')],'Type','line',... '-or','Type','hggroup','-or','Type','Text','-or','Type','image','-or','Tag','legend'); if ~isempty(h_curCurve) delete(h_curCurve); end Im = MonImageRGB ; imshow(Im,'Parent',hx); end end
Voilà mon soucis, si vous avez besoin d'informations supplémentaire n'hésitez pas
Bonne journée !
Partager