0

我有一个运行几分钟的 GUI。在这个 GUI 中,我有使用以下线条连续显示的图像 -

     axes('Position',[.3 .25 .3 .5]);
     image(imcell{1,2});

问题是,即使我使用鼠标通过按左上边缘的 X 来关闭窗口,也会打开一个新窗口,显示这些图像直到结束。

那么如何在不打开新窗口的情况下使 GUI 无法工作(关闭它)。

我猜它类似于“windowbuttonpressfcn”或“buttonpressfcn”,但是-

  1. 我不认为按下 x 被认为是按下,因为它在窗外..
  2. 我尝试使用 get(hobject,'currentpoint') 但它不起作用,我认为这不是方法..
4

1 回答 1

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)

在您的关闭函数中,您可以进行清理工作,包括停止程序中正在进行的任何进程。

于 2012-10-21T18:58:17.753 回答