【matlab】进度条嵌入主GUI界面

点击打开链接  暂未实验成功,博主本人也不确定是否可行!

最近用到了waitbar,但是Matlab的waitbar总游离于主窗口之外,看起总是不是那么地爽于是想在论坛上找到把进度条嵌入到主GUI界面去的方法,不过没有找到现成的,只好自己动手了^_~
在GUI主窗口找一个空地,放上一个axes,然后如下设置这个axes的参数属性:
'XLim',[0 100],
'YLim',[0 1],
'Box','on', 
'Units','Points',
'XTickMode','manual',
'YTickMode','manual',
'XTick',[],
'YTick',[],
'XTickLabelMode','manual',
'XTickLabel',[],
'YTickLabelMode','manual',
'YTickLabel',[]);
偶根据liuhuanjinliu大哥的思想改编一下waitbar为自定义函数mywaitbar(偶简去了原waitbar函数的其它功能,呵呵。。。)
mywaitbar的代码如下:

  1. function mywaitbar(x,varargin)
  2. if nargin < 1
  3.     error('Input arguments not valid');
  4. end
  5. set(0,'CurrentFigure',gcf);
  6. fAxes = findobj(gcf,'type','axes');
  7. set(gcf,'CurrentAxes',fAxes);
  8. if nargin > 1
  9.     hTitle = get(fAxes,'title');
  10.     set(hTitle,'String',varargin{1});
  11. end
  12. fractioninput = x;
  13. x = max(0,min(100*x,100));
  14. if fractioninput == 0    
  15.     cla
  16.     pause(0.1) % 暂停小会清除上次使用进度 
  17.     xpatch = [0 x x 0];
  18.     ypatch = [0 0 1 1];
  19.     xline = [100 0 0 100 100];
  20.     yline = [0 0 1 1 0];
  21.     patch(xpatch,ypatch,'b','EdgeColor','b','EraseMode','none');
  22.     set(gcf,'UserData',fractioninput);
  23.     l = line(xline,yline,'EraseMode','none');
  24.     set(l,'Color',get(gca,'XColor'));   
  25. else
  26.     p = findobj(gcf,'Type','patch');
  27.     l = findobj(gcf,'Type','line');
  28.     if (get(gcf,'UserData') > fractioninput)
  29.         set(p,'EraseMode','normal');
  30.     end
  31.     xpatch = [0 x x 0];
  32.     set(p,'XData',xpatch);
  33.     xline = get(l,'XData');
  34.     set(l,'XData',xline);  
  35. end
  36. drawnow;
复制代码
GUI主界面某个回调函数下:

  1. mywaitbar(0,'Please Wait...');
  2. TheEndTime = 600; 
  3. for t = 1:TheEndTime
  4.        mywaitbar(t/TheEndTime,[num2str(floor(t*100/TheEndTime)),'%']);
  5. end
复制代码


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值