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