imrect in infinite loop
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
jojo9540
el 29 de Mzo. de 2017
I have a Matlab UI where I want the user to input several areas using imrect as soon as a radiobutton is selected. It is unknown how many areas will be selected so the selection needs to be in an infinite loop.
As soon as another radiobutton is selected, the imrect input should stop, which I cannot get to work.
Here is a minimal working example:
function mwe
ax = axes('Position', [0 0 1 1]);
bg = uibuttongroup('Position',[0 0 .15 1], 'SelectionChangedFcn',{@bselection, ax});
r1 = uicontrol(bg, 'Style','radiobutton', 'String','Option 1', 'Position',[10 250 100 30]);
r2 = uicontrol(bg, 'Style','radiobutton', 'String','Option 2', 'Position',[10 225 100 30], 'Value',1);
function bselection(source, event, ax)
switch event.NewValue.String
case 'Option 1'
while true
h = imrect(ax);
% do stuff
delete(h);
end
case 'Option 2'
% do not show imrect and do other stuff
end
I appreciate any help.
1 comentario
Adam
el 29 de Mzo. de 2017
Can you not just test the state of the radiobutton within your while loop rather than use the callback to deal with 'Option 2'?
Respuesta aceptada
Jan
el 29 de Mzo. de 2017
switch event.NewValue.String
case 'Option 1'
set(ax, 'UserData', 1);
while get(ax, 'UserData') == 1
h = imrect(ax);
% do stuff
delete(h);
end
case 'Option 2'
set(ax, 'UserData', 0);
end
Do you want to cancel the currently active input of the rectangle? Does the original code contain a pos = wait(h) ?
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!