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と新しいウィンドウがポップアップ表示されるため、コード内で新しい Figure を開き続ける場合、ウィンドウを閉じても役に立ちません。ウィンドウ/図が閉じられているかどうかを確認し、その場合はプロットをスキップする必要があります。

% 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

Figure ウィンドウを閉じると、ishandle(h)は 0 を返し、プロットは表示されません。

Figure が閉じられると、DeleteFcnイベントが発生します。Figure を閉じるときにカスタム ジョブを実行する場合は、イベント ハンドラを Figure ハンドルに接続する必要があります。

set(h, 'DeleteFcn', @my_close_function)

close 関数では、プログラムで実行中のプロセスを停止するなど、クリーンアップ作業を行うことができます。

于 2012-10-21T18:58:17.753 に答える