Bonjour à tous,
J'ai un petit souci dans le développement d'une interface graphique
Un pushbutton "lecture" me permet de lire une séquence d'image et un pushbutton pause me permet de mettre en pause cette lecture
Dans un premier cas qui fonctionne bien (le bouton pause remplit bien son rôle) la lecture et la pause ne concerne qu'une image sur un axes
code bouton pause :
code bouton lecture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function pushbutton2_Callback(hObject, eventdata, handles) handles.pau=1; guidata(hObject, handles);
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 function pushbutton1_Callback(hObject, eventdata, handles) handles.pau=0; guidata(hObject, handles); while handles.Nimage< handles.NbImages % pause(0.2) drawnow handles = guidata(hObject); if handles.pau==1 guidata(hObject, handles); return end handles.Nimage=handles.Nimage+handles.vl; if handles.Nimage >= handles.NbImages handles.Nimage=handles.NbImages; set(handles.edit2,'String',handles.Nimage); end handles.image=cell2mat(handles.visudetour(1,handles.Nimage)); set(handles.edit2,'string',handles.Nimage); guidata(hObject, handles); axes(handles.axes1); imagesc(handles.image); axis image colorbar caxis([handles.c1Ti1 handles.c2Ti1]) guidata(hObject, handles); % % % end guidata(hObject, handles);
Dans mon second cas par contre le bouton pause fonctionne de manière tres aléatoire il faut le plus souvent appuyer plusieurs fois sur le bouton pour que la pause soit effective, dans ce cas je met à jour une image sur un axe 1 et un graph sur un axe 2.
Les codes me semblent similaires j'ai vérifié en changeant une couleur sur l'interface que l'appui sur le bouton pause était effectif du coup je vois vraiment pas d'où vient ce problème
code bouton pause :
code bouton lecture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function pushbutton7_Callback(hObject, eventdata, handles) handles.pau=1; % set(handles.pushbutton6,'BackgroundColor',[1,0.7,0.4]); % set(handles.pushbutton7,'BackgroundColor','g'); guidata(hObject, handles);
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 function pushbutton6_Callback(hObject, eventdata, handles) handles.pau=0; % set(handles.pushbutton7,'BackgroundColor',[1,0.7,0.4]); % set(handles.pushbutton6,'BackgroundColor','g'); guidata(hObject, handles); while handles.N4<handles.NbImages drawnow handles = guidata(hObject); if handles.pau==1 guidata(hObject, handles); return end handles.N4=handles.N4+handles.vf2; if handles.N4 >= handles.NbImages handles.N4=handles.NbImages; set(handles.edit4,'String',handles.N4); end handles.image=cell2mat(handles.donnee(1,handles.N4)); set(handles.edit4,'string',handles.N4); guidata(hObject, handles); axes(handles.axes1); % cla imagesc(handles.image); axis image colorbar caxis([handles.c1Ti1 handles.c2Ti1]) % impixelinfo guidata(hObject, handles); axes(handles.axes2); % cla plot(handles.point(:,2),handles.point(:,1),'--','LineWidth',2) hold on plot(handles.point(handles.N4,2),handles.point(handles.N4,1),'--rs','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',15) guidata(hObject, handles); hold off guidata(hObject, handles); end guidata(hObject, handles);
Si quelqu'un a une explication à ce phénomène ca m'interesse fortement, j'en perd mon latin la :p .
Merci d'avance, je suis preneur de toute remarque/idée etc ...![]()
Partager