- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0 |
现在Windows环境下的应用程序经常要用到进度条,用以指示出一些复杂进程的运行状态。目前我们在窗体设计时,使用的都是单色进度条。本文讲述在WindowsXP环境下,使用VB2005制作一个漂亮的颜色渐变的进度条组件。
一.技术细节
这种进度条的显示相当于使用许多颜色相近的“画笔”在窗体上绘制方框。这些“画笔”就相当于一个画笔数组。首先要建立颜色数组,初始的时候放入一些颜色值,然后根据平滑度的设置来重新设置颜色数组。依次取出颜色数组中两个相邻的颜色值,计算这两个颜色经过混合后的颜色,再放入到两个颜色的中间。例子中颜色数组中有8种颜色。平滑度的值从0开始循环,最高是7。每经过一次循环,颜色数组中就增加了一些过渡颜色。平滑度设置的越大,则颜色过渡的越柔和。产生的效果越漂亮。颜色数组生成之后,画笔数组就确定了。它的大小和颜色数组一致。有了画笔数组,下面的问题就是在窗体上进行绘图操作了。
二、实现原理
在绘图操作之前。所以要重载基类中的窗体的消息处理事件WndProc,窗体大小变化事件OnResize和窗体重绘事件OnPaint。加入以下属性设置:
Minimum。表示进度条的最小值。默认是 0 。
Maximum。表示进度条的最大值。默认是 100 。
Value。表示了进度条的当前值。默认是 0 。
Smoothness。表示了进度条颜色渐变的平滑度。默认是 0 。
在初始化的时候,设置了以上四个属性后,相应的画笔数组产生了。当前值的每次改变都要触发OnPaint事件。触发事件后,首先绘制进度条的外部边框,接着得到内部边框的总宽度和高度。根据当前值,最小值和最大值计算完成百分比,由完成百分比乘以总宽度得到当前值占用的宽度。总宽度除以画笔数组的个数得到每个画笔所占用的宽度。然后就是从初始宽度循环到当前值占用的宽度,从画笔数组中依次使用画笔按照每个画笔所占用的宽度和高度填充颜色。循环结束后,如果百分比为100%。则使用画笔数组中的最后一个画笔绘制颜色。进度条显示完毕。
三、实现步骤
打开VS2005,点击“文件”下的“新建项目”,在打开的窗体中,“项目类型”选择“Visual Basic”。“模板”选择“Windows 控件库”。在左下角,“名称”改为“GradientProcessBar”。按下“确定”按钮,新建工程。在“解决方案资源管理器”窗口中,将文件名UserControl1.vb 改为 GradientProcessBar.vb 。将下面完整的代码加入到GradientProcessBar.vb文件中。
Option Strict On
Option Explicit On
Imports System.Drawing
Imports System.Windows.Forms
Public Class GradientProcessBar
Inherits UserControl
Public Const MinSmoothness As Integer = 0 '最小平滑度
Public Const MaxSmoothness As Integer = 7 '最大平滑度
Private Const BorderWidth As Integer = 2 '边界宽度
Private lstDefault As List(Of Color) '颜色数组
Private lstBrushes As List(Of SolidBrush) '画笔数组
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |