我有一个运行几分钟的GUI。 在这个GUI中,我有使用直线显示的图像 -
axes('Position',[.3 .25 .3 .5]);
image(imcell{1,2});
问题是,即使我按下左上边缘的X使用鼠标关闭窗口,也会打开一个新窗口,显示这些图像直到结束。
那么如何在不获取新窗口的情况下打破GUI工作(关闭它)。
我想它的类似于“windowbuttonpressfcn”或“buttonpressfcn”,但是 -
答案 0 :(得分:2)
调用axes
会弹出一个新窗口,因此如果您继续在代码中打开新数字,关闭它将无济于事。您必须检查窗口/图形是否已关闭,并在这种情况下跳过绘图,例如
% create the figure somewhere in the code
h=figure(1);
% ...
% your image processing loop
while(do_work)
if ishandle(h)
axes('Position',[.3 .25 .3 .5]);
image(imcell{1,2});
end
end
如果您现在关闭图形窗口,ishandle(h)
将返回0并且图形将不会显示。
当图形关闭时,DeleteFcn
事件被触发。如果要在关闭图形时执行自定义作业,则应将事件处理程序连接到图形句柄:
set(h, 'DeleteFcn', @my_close_function)
在您的关闭功能中,您可以执行清理工作,包括停止程序中正在进行的任何过程。