如何在Visual Studio中基于CircularProgressBar实现半圆形进度条
半圆形进度条实现方案
基于现有CircularProgressBar包的无源码改造方法
- 给CircularProgressBar控件外层套一个和进度条同宽、高度为进度条一半的容器(WPF用Grid/Border、Winform用Panel均可),将容器的
ClipToBounds(WPF)或Clip(Winform)属性设为裁剪掉下半部分区域,无需修改包源码即可隐藏圆形进度条的下半部分,直接得到半圆形的视觉效果 - 调整进度条起始角度配置:将默认起始角度修改为180°(左侧水平位置),设置进度满值对应扫过角度为180°,进度值与角度换算公式为:
扫过角度 = 进度值 * 180 / 进度最大值,比如最大值为100时,100%进度刚好扫完180°的半圆 - 调整进度数值文本的垂直偏移量,将其移到可见的半圆区域内即可
轻量自定义实现方案(无需依赖第三方包)
如果改造第三方包适配成本太高,直接自定义绘制更可控,核心代码不超过50行:
- WPF场景:用
Path控件分别绘制背景灰色半圆弧和前景彩色进度弧,绑定ArcSegment的Size和RotationAngle属性,进度变更时动态更新前景弧的扫过角度即可,核心逻辑示例:
// 假设进度取值范围为0~100 double sweepAngle = 180 * (currentProgress / 100.0); progressArcSegment.RotationAngle = sweepAngle;
- Winform场景:重写控件
OnPaint方法,调用DrawArc方法先绘制180°的灰色背景弧,再根据当前进度值绘制对应角度的彩色进度弧,最后在圆弧中间位置绘制进度文本即可
效果参考
原Nuget包的圆形进度条效果:
期望实现的半圆形进度条效果:
内容的提问来源于stack exchange,提问作者tackleberry
相关产品推荐
相关产品推荐



