Conmajia ? 2012
Updated on Feb. 21, 2018
Google Chrome 的圆形进度条。

Demo

功能
显示百分比(0-100)。如果进度值达到 100%,则将闪烁指定次数。
属性
BlinkCount,结束后闪烁几次。0 为不闪烁,默认 2.
BlinkSpeed,闪烁速度,0-255,默认 10.
Image,中央图标
SpokeColor,辐条颜色
SpokeCount,辐条数量
Value,进度百分比
事件
没有加入进度变化或完成事件。
原理和结构
原理参考图 1:

绘制步骤如下:
用
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 }
参阅:源代码
The End. \(\Box\)