【WPF】环形进度条

WPF中自带有长条形的进度条,大部分场景都算适用,但是仍然有一部分空间小的场景不太合适,此时我们想到安卓上常用的环形进度条,美观,又不占空间。

那么WPF中的环形进度条控件在哪呢?

很遗憾,自带组件中没有,这需要我们自己绘制。

环形进度条的核心在于根据百分比绘制弧形长度,在WPF中,PathGeometry可以绘制复杂形状,其中ArcSegment专门用于画弧形。

示例工程直接下载:https://download.csdn.net/download/u010875635/10791096

示例动画:

示例动画

 

ArcSegment的弧形有几个重要参数,起点(一般在PathFigure中设置,ArcSegment属于PathFigure一部分)、两个半径是否优势弧(大于180度为优势弧)、终点旋转角度等。

我们根据角度百分比计算弧长终点,由于弧长虽然是线性增长,但对应的终点X、Y坐标并非是线性变化,我们需要区分4个象限来计算终点。

我们将弧形放置在一个方形的Grid中,半边长为R,设置弧形进度条的粗细为x,设置弧形半径为r(r要小于R-x),起始点坐标为 (leftStart, topStart)

一、第一象限终点计算


                         
 

第一象限终点坐标为:X = leftStart + r*cos(α);  Y = topStart + r*sin(α);

 

二、第二象限终点计算

第二象限终点坐标为:X = leftStart + r*cos(α);  Y = topStart + r + r*sin(α);

 

三、第三象限终点计算

第三象限终点坐标为:X = leftStart  - r*sin(α);  Y = topStart + r + r*cos(α);

 

四、第四象限

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值