基于位图特效的进度条往往在游戏里见得很多,尤其是在换关的时候,会有彩色的动画进度条,非常好看。现而今的桌面应用程序也开始有了这种趋势,位图越来越多,程序越来越好看,我真怀疑总有一天高程考试里会加进美术题的。我用VC7.0制作了一个基于位图灰度变化特效的进度条控件,这一控件的来由与现在流行的《疯狂坦克》有关,在游戏开始的时候,一个灰色的位图由上自下慢慢变成彩色,标志游戏的加载进程。这个控件能够很容易的被修改,以加入更多的特效支持,但是作为一个模板,首先还是用比较简单的灰度转换特效来得清楚。
此控件名为BitmapProgressCtrl 1.0,它提供了一个名为IbitmapProgCtrl的接口,其中包含三个属性:
LONG Direction: 控制进度条的行进方向,从上到下(1),从下到上(2),从左自右(3)或者从右自左(4)
LONG FullLength: 进度条的总长度,缺省为100,当进度条前进1时就代表完成了百分之一,当然,你可以把这个值设得更大,以获得更精确的前进步长。
LONG Style: 设定特效。当前只实现了一种特效,就是灰度位图,所以这个属性保留,以便今后扩展
另有五个方法:
SetStyle(LONG style):作用等同于Style属性
LoadBackgroundBitmap([in] BSTR bstrBitmapFileName):加载背景位图,位图文件名是其唯一参数
Reset(void): 将进度条恢复为初始状态
MoveForward(LONG length) :进度条前进length个单位长度,length是相对于FullLength属性的步长。
如果FullLength是100,那么length为1时,进度条前进百分之一的距离,如果FullLength是1000,那么length为1时,进度条前进千分之一。
MoveBackward(LONG length): 进度条后退length个单位长度。由于现在还没有想出什么时候进度条应该后退,所以暂时没有实现它。调用这个方法只会简单的返回S_OK,不会有任何反应。