|
pause(0.0001);
title('动态画线');
大部分不会出错;
原因:pause得太久,窗口关掉了,又title,ishandle(h)=1;自然无限循环.
补充:整个过程,无论窗口是否关闭,h都是等于1。不同的是:关闭窗口ishandle(h)=0;这个函数能分辨是否关闭了窗口。
用下面的调试程序,可以得到:
在两次keyboard时关掉窗口,输入ishandle(h),并且程序可以正常停止,原因是你在title前关的无效,title后关,就可以正常跳出循环,如果pause得太慢,你是大部分关在title前,太快大部分关在title后,故而会出现几率性跳出循环,只是大小不一样。建议pause()语句挪到title后就不会出错。
clear all;
h=figure('NumberTitle','off','Name','动画演示',...
'MenuBar','none','color','c');
set(h,'doublebuffer','on');
while ishandle(h)
x=rand;
y=rand;
imshow(imread('cameraman.tif'),[]);
hold on;
x1=rand;y1=rand;
plot(255*[x,x1],255*[y,y1],'r','linewidth',2);
x=x1;y=y1;pause(2);keyboard
title('动态画线');keyboard
drawnow;
end
[ 本帖最后由 donkeyxu 于 2007-10-22 22:31 编辑 ] |
|