C# 使用GDI制作垂直进度条(由下往上)

摘要:
使用GDI+绘进度条的方式多种多样,可以封装一个UserControl,也可以直接使用一个控件来绘制(Label、Image、Panel等),甚至可以直接在winForm上画一个,关键代码没几行(这里是一个量杯的进度条为例):         Graphicsg=e.Graphics;SolidBrushbrush=null;stringstrName="";//由下至上的进度条需要开始时设置一个

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

          Graphics g =e.Graphics;
                SolidBrush brush = null;
                string strName = "";
                //由下至上的进度条需要开始时设置一个100%进度的背景色+一个白色层,使用时白色层根据进度减小高度
                brush = newSolidBrush(Color.White);
                //获取进度:已经倒入的重量/进度条高度*100
                Info.Progress = Info.ActualWeight / e.ClipRectangle.Height * 100;
                //画前色(这里的进度条高度是不固定的=总重量,所以直接高度-倒入的重量就可以了,如果是固定的高度,计算一下需要减少多少就行)
                e.Graphics.FillRectangle(brush, 0, 0, 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 / 2 - sf.Width / 2, e.ClipRectangle.Height / 2 - this.Font.Height / 2);
                

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

免责声明:文章转载自《C# 使用GDI制作垂直进度条(由下往上)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Gradle 配置C/C++ 关于数组和指针的总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

破解SQLYog30天试用方法

删除此项,SQLyog重新启动后将重新生成注册表。使用寿命为30天。...

Map的深浅拷贝的探究

detailsmap.get:"");}}}查看输出:可以看到通过“=”复制的map内容随源map的改变而改变,而通过putAll方法和Iterator复制的map则不受源map改变的影响。如示例中的三种拷贝方法:针对map中的数据为统一的、简单的基本数据类型,当拷贝的数据通过“=”复制map的方法为浅拷贝,putAll方法为深拷贝,iterator遍历添加...

字符串解压缩类库(zip、GZIP、QuickLz、snappy、lzf、jzlib)介绍

它旨在提供高压缩速度和合理的压缩比=-1){out.write;}字节[]未压缩=输出。到字节数组();--返回提取字符串的字节数组。介绍使用预先选择的解压缩类库-GZIP压缩字符串=“这是一个用于测试的字符串”;ByteArrayOutputStreamout=新的ByteArray输出流();GZipOutputStreamgout=newGZipOut...

Wayland 源码解析之代码结构

Wayland实现的代码组成可以分为以下四个部分:1.Wayland库的核心部分,大部分Wayland协议实现都位于该库中。1) 该工具程序分析Wayland协议文件并生成相应的头文件和代码文件。源代码文件列表:wayland/cursor/wayland cursor。通道/光标/通道光标。cwyland/cursor/os兼容性。cwyland/curs...

shell脚本之数组

declare-AARRAY_NAME:声明关联数组。数组中元素的赋值方式:一次只赋值一个元素;ARRAY_NAME[INDEX]=value一次赋值全部元素;ARRAY_NAME=注意:元素与元素之间使用空格字符隔开只赋值特定元素;这种称之为稀疏格式的数组。/bin/bash#declare-aranddeclare-imax=0foriin{1..10}...

vant上传文件到后端

Html代码<Ts代码文件列表=[]/image/[a-zA-z]+/。test(file.file.type)){this.$toast(“请上传图片”);returnfalse;config).then(res=>})。捕获(()=>拒绝)=>ts=“+newDate().getTime()).然后...