使用GDI+绘进度条的方式多种多样,可以封装一个UserControl,也可以直接使用一个控件来绘制(Label、Image、Panel等),甚至可以直接在winForm上画一个,关键代码没几行(这里是一个量杯的进度条为例):

          Graphics g = e.Graphics;
SolidBrush brush = null;
string strName = "";
//由下至上的进度条需要开始时设置一个100%进度的背景色+一个白色层,使用时白色层根据进度减小高度
brush = new SolidBrush(Color.White);
//获取进度:已经倒入的重量/进度条高度*100
Info.Progress = Info.ActualWeight / e.ClipRectangle.Height * ;
//画前色(这里的进度条高度是不固定的=总重量,所以直接高度-倒入的重量就可以了,如果是固定的高度,计算一下需要减少多少就行)
e.Graphics.FillRectangle(brush, , , e.ClipRectangle.Width, e.ClipRectangle.Height - (int)Info.ActualWeight);
strName = Info.Name + ":" + Info.Progress.ToString("0.00") + "%";
//得到写入的字符串像素宽度--居中用
SizeF sf = g.MeasureString(strName, this.Font);
//显示进度
g.DrawString(strName, this.Font, new SolidBrush(ForeColor), e.ClipRectangle.Width / - sf.Width / , e.ClipRectangle.Height / - this.Font.Height / );

注意:进度条更新时需要调用   *.Invalidate();

最新文章

  1. linux修改IP
  2. C++和C代码互相调用是不可避免的
  3. struts_表单得到数据
  4. DLT(Diagnostic Log and Trace)嵌入式系统程序运行记录
  5. Zend Optimizer not installed可能原因及解决方法
  6. [html] 学习笔记--Web存储
  7. Uva 10892 LCM Cardinality (数论/暴力)
  8. Apache 、Tomcat、Nginx的区别
  9. 《R语言入门与实践》第二章:R包和帮助文档
  10. angularjs入门初体验
  11. 3D点云的深度学习
  12. 【RS】Matrix Factorization Techniques for Recommender Systems - 推荐系统的矩阵分解技术
  13. Ants-穷举算法
  14. 查看CPU序列号以及系统信息
  15. 如何在ecplise中配置maven以及ecplise访问本地仓库
  16. js数组遍历 千万不要使用for...in...
  17. 获取http和ftp地址的图片
  18. STL hashtable阅读记录
  19. Linux下编译、安装并启动memcached
  20. DP的四边形优化

热门文章

  1. 制作ssh互信的docker镜像
  2. 如何开发由Create-React-App 引导的应用(一)
  3. 用于浏览器桌面通知的Web API 接口 -notification
  4. 关于atom
  5. 快速搭建appium自动测试环境
  6. xshell 与 putty
  7. dedecms后台系统基本参数标题
  8. python通过scapy模块进行arp断网攻击
  9. eclipse中如何同期化
  10. python3 第一章 - 简介