How to terminate drawline() with a buttonPushedCallback?

12 ビュー (過去 30 日間)
zhehao.nkd 2021 年 6 月 12 日
コメント済み: zhehao.nkd 2021 年 6 月 21 日
I would like to repeat the drawline command for selecting multiple ROIs in a figure axes, and I hope to stop the while-loop after I press a stop button in the mlapp GUI. For this purpose, I used a stopButtonPushed callback to change the app.stopstate. But the problem is that, the drawline command will have been excuted after I press the stop button, so I have to draw an extract ROI before it stops.
Is there any way to solve this problem, like killing the running process? Thank you for your help!
(1) The multple ROIs I selected by repeating drawline()
(2) Part of my code related to this question
app.stopstate = 0;
while true
if app.stopstate == 1
app.stopstate = 0;
app.en = app.en + 1;
app.element{app.en} = drawline(app.UIAxes,'Color',color,'Deletable',true);
function stopButtonPushed(app, event)
app.stopstate = 1;


Aghamarsh Varanasi
Aghamarsh Varanasi 2021 年 6 月 15 日
You can use the keyboard shortcut 'Esc' key to cancel the drawing of a line while using the 'drawline' function. In your case, you can click on the GUI button to break from the while loop and click 'Esc' to cancel the extra line that you need to draw. However, cancelling the 'drawline' function returns an ROI object with empty 'Position' field, which can be filtered out easily.
For more information refer to the 'Tips' section of the documentation page of drawline.
  1 件のコメント
zhehao.nkd 2021 年 6 月 21 日
Thank you, it works!


その他の回答 (0 件)


Find more on Startup and Shutdown in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by