问题描述
|
我正在尝试修改此代码
h = waitbar(0,\'Please wait...\');
for i=1:10,% computation here % waitbar(i/10) end
close(h)
如何将服务栏划分为10个步骤。我的意思是它应该看起来像
-------------------
| | | | | | | | | |
-------------------
解决方法
以下代码将使您可以在等待栏中添加垂直线:
hWait = waitbar(0,\'Progress\'); %# Create the waitbar and return its handle
hAxes = get(hWait,\'Children\'); %# Get the axes object of the waitbar figure
xLimit = get(hAxes,\'XLim\'); %# Get the x-axis limits
yLimit = get(hAxes,\'YLim\'); %# Get the y-axis limits
xData = repmat(linspace(xLimit(1),xLimit(2),11),2,1); %# X data for lines
yData = repmat(yLimit(:),1,11); %# Y data for lines
hLine = line(xData,yData,\'Parent\',hAxes,... %# Plot the lines on the axes...
\'Color\',\'k\',... %# ... in black...
\'HandleVisibility\',\'off\'); %# ... and hide the handles
在运行完上面的代码然后执行waitbar(0.35,hWait);
之后,您将看到如下图:
注意:当更新时,图中的黑线(包括我添加的垂直线和进度条周围的现有框)将间歇地显示在红色进度条的上方或下方。这似乎是WAITBAR行为的现有错误,我还没有找到解决该问题的方法。但是,在MathWorks File Exchange上可以找到很多替代方案,因此,如果内置函数不能满足您的需要,我当然会检查一下。 ;)
,您可以随时从零开始重新启动并更新消息。例如:
h = waitbar(0,\'Please wait...\');
for step=1:10
waitbar(0,h,[\'Step \' num2str(step) \'/10 - Please wait...\']);
for i=1:100
% Work...
waitbar(i/100,h);
end
end
,我不确定如何向等待栏本身添加步骤,但是您可以添加一条动态消息,该消息会更改以显示完成了多少计算:
h = waitbar(0,\'Please wait...0% complete\');
for i = 1:10
% Computation here
waitbar(i/10,sprintf(\'Please wait...%d%% complete\',100*(i/10)));
end
close(h);
,由于ѭ6是内置功能,灵活性较低,我认为没有简单的方法可以使等待栏看起来像您想要的。如果真的很重要,您可以在几种进度模式下绘制一个等待栏,并将其另存为图片。然后您就可以将图片加载到看起来像等待栏的简单GUI中! ;)