Canvas实现自定义进度条效果
Canvas-进度条效果.gif
一、使用Canvas实现原理
最重要的是一步一步的调试,最终实现自己想要的效果。
- 绘制图形部分逻辑
painting() { //重置坐标系及相关配置 this.ctx.restore() this.ctx.clearRect(0, 0, this.canvasInfo.width, this.canvasInfo.height) this.outViews = new OutViews({...this}).paint() this.innerLines = new InnerLines({...this}, this.circleRadio - 20 * this.rem).paint() this.innerProgress = new InnerProgress({...this}, this.circleRadio - 40 * this.rem).paint(this.value) this.innerText = new InnerText({...this}).paint(this.value) }
- 因为每个部分的绘制工作都不少,就将图形分为以下几部分
- 1.最外圈的点、线、点弧线
OutViews
- 2.里面的带背景的线框
InnerLines
- 3.圆弧进度条
InnerProgress
- 4.百分比值及正确率文本
InnerText
- 1.最外圈的点、线、点弧线
- 为canvas添加
mousemove
事件监听addMapEvent() { this.canvas.addEventListener('mousemove', ev => { console.log("mousemove") const currentX = ev.offsetX, currentY = ev.offsetY let isIn = this.innerLines.isPointIn(currentX, currentY) this.border = isIn ? 1.2 : 1 if (isIn) this.addTimer() else this.removeTimer() }) }
- 如果鼠标在
内圈线框InnerLines
内,如果在线框内则设置所有线条加宽, 并添加timer
更新rotate
值完成旋转效果;否则移除timer
去掉旋转效果。addTimer() { this.removeTimer() this.timer = setInterval(() => { this.rotate = 5 this.painting() }, 100) }
- 如果鼠标在
页面实现整体效果:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhckeiig
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13