转自:http://www.ilovematlab.cn/thread-61732-1-1.html
当matlab 的gui中有多个axes窗口时,指定一个axes窗口作为进度条窗口
function mywaitbar(x,varargin)
if nargin < 1
error('Input arguments not valid');
end
fh = varargin{end};
set(0,'CurrentFigure',fh);
%fAxes = findobj(fh,'type','axes');
fAxes =varargin{2};
set(fh,'CurrentAxes',fAxes);
if nargin > 1
hTitle = get(fAxes,'title');
set(hTitle,'String',varargin{1});
end
fractioninput = x;
x = max(0,min(100*x,100));
if fractioninput == 0
cla
xpatch = [0 x x 0];
ypatch = [0 0 1 1];
xline = [100 0 0 100 100];
yline = [0 0 1 1 0];
patch(xpatch,ypatch,'r','EdgeColor','r','EraseMode','none');
set(fh,'UserData',fractioninput);
l = line(xline,yline,'EraseMode','none');
set(l,'Color',get(gca,'XColor'));
else
p = findobj(fh,'Type','patch');
l = findobj(fh,'Type','line');
if (get(fh,'UserData') > fractioninput)
set(p,'EraseMode','normal');
end
xpatch = [0 x x 0];
set(p,'XData',xpatch);
xline = get(l,'XData');
set(l,'XData',xline);
end
drawnow;
%主程序调用:修改句柄函数值就可以指定axes1作为条形框了
h1=findobj(handles.axes1,'visible','off');%获取按键1的可视化句柄
set(h1,'visible','on');%设置句柄为可见
mywaitbar(0,'Please Wait...',handles.axes1,handles.figure1);
TheEndTime = 600;
for t = 1:TheEndTime
mywaitbar(t/TheEndTime,[num2str(floor(t*100/TheEndTime)),'%'],handles.axes1,handles.figure1);
end