利用VB2005制作颜色渐变的进度条

来源:互联网 发布:java实现登陆注册 编辑:程序博客网 时间:2024/06/05 15:39

现在Windows环境下的应用程序经常要用到进度条,用以指示出一些复杂进程的运行状态。目前我们在窗体设计时,使用的都是单色进度条。本文讲述在WindowsXP环境下,使用VB2005制作一个漂亮的颜色 渐变的进度条组件。
一.技术细节
这种进度条的显示相当于使用许多颜色相近的“ 画笔”在窗体上绘制方框。这些“画笔”就相当于一个画笔数组。首先要建立颜色数组 ,初始的时候放入一些颜色值,然后根据平滑度的设置来重新设置颜色数组。依次取出颜色数组中两个 相邻的颜色值,计算这两个颜色经过混合后的颜色,再放入到两个颜色的中间。例子中颜色数组中有8种 颜色。平滑度的值从0开始循环,最高是7。每经过一次循环,颜色数组中就增加了一些过渡颜色。平滑 度设置的越大,则颜色过渡的越柔和。产生的效果越漂亮。颜色数组生成之后,画笔数组就确定了。它 的大小和颜色数组一致。有了画笔数组,下面的问题就是在窗体上进行绘图操作了。
二、实现原理
在绘图操作之前。所以要重载基类中的窗体的消息处理事件WndProc,窗体大小变化事件 OnResize和窗体重绘事件OnPaint。加入以下属性设置:
Minimum。表示进度条的最小值。默认是 0 。
Maximum。表示进度条的最大值。默认是 100 。
Value。表示了进度条的当前值。默 认是 0 。
Smoothness。表示了进度条颜色渐变的平滑度。默认是 0 。
在初始化的时候 ,设置了以上四个属性后,相应的画笔数组产生了。当前值的每次改变都要触发OnPaint事件。触发事件 后,首先绘制进度条的外部边框,接着得到内部边框的总宽度和高度。根据当前值,最小值和最大值计 算完成百分比,由完成百分比乘以总宽度得到当前值占用的宽度。总宽度除以画笔数组的个数得到每个 画笔所占用的宽度。然后就是从初始宽度循环到当前值占用的宽度,从画笔数组中依次使用画笔按照每 个画笔所占用的宽度和高度填充颜色。循环结束后,如果百分比为100。则使用画笔数组中的最后一个 画笔绘制颜色。进度条显示完毕。

鱼台论坛http://bbs.370827.org/thread-5725-1-1.html

0 0