如何显示进度条
一、实现原理 采用一个完整的图片来作为进度条,每次当进度条改变时,采用先贴图再用背景色擦去不需显示的一段进度的方法来实现进度条的变化,可实现制作任何复杂美观的进度条。 二、准备工作 首先需准备一个如下图样式的进度条图片(当然你可以做你自己喜欢的样式)。然后在窗体中加入一PictureBox控件,属性设置如下: AutoSize:True Appearance:Falt AutoRedraw:True ScaleMode: Pixel Picture:〃准备的图片〃 再加一辅助控件(只用于保存图片,方便快捷地使用进度条)Image,属性设置如下: Picture:〃准备的图片〃 Visible:FALSE 说明:本文所讲的进度条并不是狭义上那种安装程序中常见的仅表示一个事件进程的进度条,而是把那些条形的,表示一个量的大小的图示统称为进度条。以此概念为基础让我们先来看看它的一些用途和类别,然后给出各类进度条的实现。 进度条的用途: ※在一般软件中表示执行进度 ※在多媒体播放器中表示音量大小、频率节奏的变化… ※在游戏中表示角色的能量、生命值… 进度条的分类: 由以上用途可知,进度条大体可分为两类 第一类:自动变化的进度条(如安装程序中的进度条) 第二类:可由用户操作的进度条(如音量调节) 以下是两类进度条的代码。 实现第一类的方法: Const MaxValue = 100 Const MinValue = 0 Dim Gene As Single Dim ProValue As Single Sub InitData() Gene = Picture1.ScaleWidth / (MaxValue - MinValue) End Sub Sub SetProBar(value As Single) Dim X As Single ProValue = value If ProValue > MaxValue Then ProValue = MaxValue Else If ProValue < MinValue Then ProValue = MinValue End If End If Text1.Text = ProValue X = (ProValue - MinValue) * Gene With Picture1 Picture1.Picture = Image1.Picture Picture1.Line (X, 0)-(.ScaleWidth, .ScaleHeight), vbWhite, BF End With End Sub 以上是实现第一类进度条的全部代码,它有相当的独立性,不管你准备的进度条有多长,此代码都可无须改变而应用于你的系统中。其中,MAXVALUE、MINVALUE为此进度条所表示的最大最小值,可由实际应用而定。 PROVALUE 为当前的进度值,可由它得到当前值,以便处理。 SETPROBAR 为实际使用的过程,在软件中通过调用此过程来改变进度条的长度。VALUE 的取值为 MINVALUE~MAXVALUEINITDATA 是初始化进度条长度和实际要表示的范围的比例因子,在软件中首先要调用此过程完成初始化工作。 第二类实现方法: 要实现此类进度条,只需在第一类的基础上再加上响应用户操作的部分即可 具体所加代码如下: Private Sub picture1_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single) If Button = 1 Then Picture1_MouseDown Button, Shift, X, Y End If End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single,Y As Single) If Button = 1 Then ProValue = Int(X / Gene + MinValue + 1) SetProBar ProValue End If End Sub 应用示例: 建一工程,然后加入下列控件,并写入所示代码即可。 控件:两个PictureBox,组成控件数组(属性设置如上)但:picture1(0)的BorderStyle:None 两个Label,组成控件数组并分别以与自已Index 值相同的PictureBox为父控件(只需把Label绘在或粘贴在相应的PictureBox上即可)属性: AutoSize:True Alignment:Center BackStyle:Transparent Label(1): Caption:〃当前音量0〃 Enabled:False Label(0): Caption:〃0%〃 一个Timer:属性:Interval:50 三、实例 一个自动的进度条和由用户控制的进度条。 Option Explicit ′如果有多个进度条且表示值的范围不同 ′则可设立一组范围值,最好能通过INDEX ′值同自已的进度条建立对应关系,以方便处理 Const MaxValue = 100 Const MinValue = 0 Dim Gene As Single Dim ProValue(1) As Single ′生成比例因子,必须首先执行 Sub InitData() Gene = Picture1(0).ScaleWidth / (MaxValue - MinValue) End Sub ′根据当前进度值设置进度条,INDEX指出是哪个进度条的值 Sub SetProBar(value As Single, Index As Integer) Dim X As Single Dim BkColor As Long ProValue(Index) = value ′对当前进度值超出范围的处理 If ProValue(Index) > MaxValue Then ProValue(Index) = MaxValue Else If ProValue(Index) < MinValue Then ProValue(Index) = MinValue End If End If ′在存在多个进度条时分别设置各进度条的不同文本 Select Case Index Case 1 Label1(Index).Caption = ProValue(Index) & 〃%〃 Case 0 Label1(Index).Caption = 〃当前音量〃 & ProValue(Index) End Select ′计算出当前进度值所对应的进度条位置 X = (ProValue(Index) - MinValue) * Gene With Picture1(Index).Picture = Image1.Picture ′把当前进度值所对应的进度条位置之后的图片用白色盖住 ′它是此法实现思路的核心 Select Case Index Case 1 bkcolor = vbWhite Case 0 bkcolor = vbMenuBar End Select Picture1(Index).Line (X, 0)-(.ScaleWidth, _ .ScaleHeight), bkcolor, BF End With End Sub ′首先初始化比例因子 Private Sub Form_Load() InitData End Sub ′在用户操作INDEX为0的进度条时的响应 Private Sub picture1_MouseMove(Index As Integer, _ Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 And Index = 0 Then Picture1_MouseDown Index, Button, Shift, X, Y End If End Sub ′根据当前鼠标坐标的X值(进度条若为纵向则使用Y值) ′计算出所对应的当前进度值,然后设置进度条 Private Sub Picture1_MouseDown(Index As Integer, _ Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 And Index = 0 Then ProValue(Index) = Int(X / Gene + MinValue + 1) SetProBar ProValue(Index), Index End If End Sub ′在演示中以定时器定时设置进度 ′实际使用时当然是按事件完成的 ′百分比来设置进度 Private Sub Timer1_Timer() Static curval As Single SetProBar curval, 1 curval = (curval + 1) Mod MaxValue If curval = 0 Then curval = MinValue End If End Sub
文章标签:
来自:进度条是什么意思
本文链接:https://www.u1e.cn/baike/a/63b51d3a67738de201211644 [复制]
猜你喜欢
夏天到了,我来到公园里玩,看见清清的湖水一波一波的荡漾着,鱼儿在湖水里游来游去。粉红的荷花张开了笑脸,碧绿碧绿的荷叶像大圆盘,远处有一孔石桥,石桥边有小山,小山上有一座凉亭,凉亭里的人们在快乐地喝茶。
我想要的未来,就是每天早上起床都能看见你和阳光都在。
生活辛苦,能找到一点阳光就快乐就好了;身体烦累,但是随时让自己心情舒畅,这是一个极好的能力,身累不致心累,生活还就是美好的。
有梦想的人睡不着,没梦想的人睡不醒。
Just because I don't want to be savage, it doesn't mean I have no temper.
最终你相信什么就能成为什么。因为世界上最可怕的二个词,一个叫执着,一个叫认真,认真的人改变自己,执着的人改变命运。只要在路上,就没有到不了的地方。
Teacher, engineer of human soul, who won't praise you!
心香三炷达苍冥,祈愿尘寰六合清。更愿佛光常注照,诸方好运享安宁!给您拜年了,祈愿您新年胜因善缘,吉祥安康!
寂寂闻猿愁,行行见云收。——李白《寻高凤石门山中元丹丘》
家声中垒也称贤,喜气临门敞绮筵,双璧联辉夸美眷,六葭应节缔良缘;女如五彩云犹丽,郎却斯文德自妍,恐负嘉招先作贺,诗题汤饼约明年。
不图虚名,不慕奢华。
不管发生什么,你都不要放弃,肯定会有意想不到的风景。也许不是你本来想走的路,可是另一条路有另一条路的风景,不要念念不忘原来的路,在这里你会遇到难忘的更好的风景。
在遥远的城市,陌生的地方,有他未曾见过的山和海。
俗话说:一百种人有一百种命运,有的人可以一条路一直走到底,有的人却注定要曲曲折折,不过谁也不需要羡慕谁。最重要的是:我们迟早会遇上。
人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。
等一阵风,等一阵雨,等一个唯一的你。
你们给我挺住,都别吃,都那么肥了怎么还有脸吃。
如果不醒来,那么现实和梦境又有何分别。
天塌下来你顶着,我垫着!
最美的不是下雨天,是陪你一起躲过的屋檐。
歇后语大全
钻进风箱的耗子是什么意思?
啄木鸟修房子是什么意思?
猪八戒买猪肝是什么意思?
猪八戒抡家伙是什么意思?
站在高山看打架是什么意思?
早天刮西北风是什么意思?
阎王爷吸鸦片是什么意思?
哑巴传话,呆子打岔是什么意思?
戏台上的绸子舞是什么意思?
头上刷浆糊是什么意思?
铁匠死在宝剑下是什么意思?
寿星老儿插草标儿(插在欲售之物上表示出卖的草棍儿)是什么意思?
屎壳郎跌粪坑是什么意思?
十月里的鸡冠花是什么意思?
师傅长胡子是什么意思?
上山背石头是什么意思?
墙缝里的蝎子是什么意思?
骑着驴看《三国》是什么意思?
抛球招亲是什么意思?
泥鳅打鼓是什么意思?
牛长鳞,马长角是什么意思?
嫩竹扁担挑重担是什么意思?
米汤煮芋头是什么意思?
卖裤子打酒喝是什么意思?
蚂蚁抬虫子是什么意思?
麦田捉鳖是什么意思?
煤粉子捏菩萨是什么意思?
老牛掉进深泥潭是什么意思?
荔枝皮翻个儿是什么意思?
老虎身上的虱子是什么意思?
花铺里的水是什么意思?
花椒煮猪头是什么意思?
猴子衔烟斗是什么意思?
和尚娶老婆是什么意思?
孩子离开娘是什么意思?
锅底笑话缸底黑是什么意思?
风口上的灯是什么意思?
飞机上吊螃蟹是什么意思?
二郎神出战是什么意思?
儿子打老子是什么意思?
毒蛇的舌头是什么意思?
地板擦子刷地是什么意思?
大闺女的荷包是什么意思?
大槌敲鼓是什么意思?
吹口哨过坟场是什么意思?
虫蛀的苹果是什么意思?
抱着石头跳深渊是什么意思?
包公斩包勉是什么意思?
包工头监工是什么意思?
拜年的见了面是什么意思?
相关推荐
还没有人回应过