是否有现成的进度条uicontrol可以添加到Matlab gui,uicontrol或ActiveX组件?
编辑我知道waitbar功能,我指的是可以在设计的GUI中实现的组件,而不只是弹出窗口。类似于状态栏中的电池状态。
发布于 2011-03-20 23:43:20
是的,有。waitbar函数就是您需要的。这里的例子很容易理解,你可以马上上手。它应该可以在所有3个平台上正常工作(Windows/OS X/Linux)。
发布于 2013-05-31 23:54:27
根据这条MatLab Newgroup注释改编我的代码,我能够将以下内容组合在一起:
function h = uiProgressBar(varargin)
%uiProgressBar: A waitbar that can be embedded in a GUI figure.
if ishandle(varargin{1}) && size(varargin, 2) > 1
ax = varargin{1};
value = varargin{2};
p = get(ax,'Child');
x = get(p,'XData');
x(3:4) = value;
set(p,'XData',x)
return
end
bg_color = 'w';
fg_color = 'r';
h = axes('Units','pixels',...
'XLim',[0 1],'YLim',[0 1],...
'XTick',[],'YTick',[],...
'Color',bg_color,...
'XColor',bg_color,'YColor',bg_color, ...
'Parent', varargin{1});
patch([0 0 0 0],[0 1 1 0],fg_color,...
'Parent',h,...
'EdgeColor','none',...
'EraseMode','none');
end
创建过程如下所示,其中parent
是要将其添加到的父面板:
myProgressBar = uiProgressBar(parent);
更新进度条就像这样简单:
uiProgressBar(myProgressBar, .2);
下面是一个完整的使用figure
的工作示例
f = figure('Name', 'Progress Bar Example', 'Position', [100 100 800 600]);
progressBar = uiProgressBar(f);
for i = 1:10:100
uiProgressBar(progressBar, i/100);
pause(.5);
end
发布于 2013-09-06 20:28:37
另一个简单的解决方案是使用两个嵌套的uipanels,如下所示:
function MyProgressBar(handle, progress)
% progress = 0.00001 .... 1
% 1st panel
p = uipanel(handle);
% 2n panel as bar
bar = uipanel(p);
set(bar, 'BackgroundColor', 'red');
x = get(bar, 'Position');
x(3) = progress; % Corresponds to % progress if unit = normalized
set(bar, 'Position',x);
end
用法:
f = figure();
set(f,'Position',[100,100,400,40]);
MyProgressBar(f, 0.5); % corresponds to 50% progress
https://stackoverflow.com/questions/5368861
复制相似问题