Fork me on GitHub
Google Chrome样式进度指示器(进度条)

© 野比 2012

最近不用Opera,换成用Google Chrome,觉得它的进度条挺有意思的,就像这样:

于是简单复刻了一个。

功能

显示给定进度百分比(0-100)。如果进度值达到100%,则将闪烁指定次数。

属性

BlinkCount,结束后闪烁几次。0为不闪烁,默认2

BlinkSpeed,闪烁速度,0-255,默认10

Image,图标,null则不显示

SpokeColor,辐条颜色

SpokeCount,辐条数量(穿过圆心算1根)

Value,进度百分比

事件

没有加入进度变化或完成事件,如果需要请自行添加。

结构

原理比较简单,参照此图:

层次如下:

Parent.BackColor填充背景

画进度,用DrawPie()

画辐条,对穿圆心,drawSpokes()

画图标,居中,drawIcon()

动画

利用一个System.Windows.Forms.Timer控件完成,在Timer中只修改淡出进度,之后Refresh(),在Paint事件中改变填充色的Alpha分量,重绘一个圆。

如此反复数次,即呈现出闪烁效果。

复制代码
1 if (!timer.Enabled || blink == BlinkCount)
2     drawProgress(canvasGraphic, value);
3 else
4 {
5     ((SolidBrush)pieBrush).Color = Color.FromArgb(count, ForeColor.R, ForeColor.G, ForeColor.B);
6     canvasGraphic.FillEllipse(pieBrush, rect);
7     ((SolidBrush)pieBrush).Color = ForeColor;
8 }
复制代码

其余部分请参阅代码:点击下载

(完)

© 野比 2012

 

 
 
标签: 图标C#控件GDI+
posted on 2012-07-26 09:20  HackerVirus  阅读(1777)  评论(0编辑  收藏  举报