使用canvas绘制环形渐变色进度条

4 篇文章 0 订阅

问题背景:

1 实现环形渐变【颜色是均匀的】

2 要有动画进度【时间要可控】

3 弧形边要顺滑【不能有明显的毛刺。产品上线后被提了这个bug :D】

4 要有背景色

代码实现方法:

1 使用canvas画,主要思路是把整个圆弧分隔成n多个小弧线,每个小弧使用不同的颜色描边

2 不同的颜色来自于一条渐变色条,渐变色条取色方式来自于网上搜索,暂时找不到原始地址了,抱歉。其思路是画一条渐变色的色带,根据百分比提取色带上对应的颜色值,然后画到弧线上

3 使用的是canvas的arcTo方法。【arc方法也可以】

4 为了减少毛刺,把canvas宽高增加到原来的N倍(N为正整数,比如2,4,6。1就是默认毛刺很多的值,不推荐。推荐2或者4)。然后用图形变换把整个画布缩小到1/N(使用transform:scale(0.5)或者0.25)

5 动画,使用了requestAnimitionFrame

效果大约是上边的样子。

*如果使用中再发现问题,会逐步修正

代码地址 https://github.com/Ajingjing006/CircleProgress

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值