canvas绘制进度条(wepy)
<template>
<canvas canvas-id="canvas" style="width:{{width+10}}px;height:{{width+10}}px;"></canvas>
</template> <script>
import wepy from 'wepy' export default class CircleProgress extends wepy.component {
props = {
progressData: {
type: Object,
default: {
page: 'index', // 首页 index 复习页 review
deg: 0 // 进度 0 - 1
}
}
}
data = {
ctx: null
}
watch = {
progressData(newValue) {
this.methods.drawCanvas(newValue, this)
}
}
computed = {
width() {
return this.progressData.page === 'index' ? 196 : 120
}
}
methods = {
drawCanvas(data, This) {
let { page, deg } = data
if (!deg) deg = 0
const r = page === 'index' ? 98 : 60 // 半径
const pw = page === 'index' ? 6 : 5 // 进度条宽度
const bgc = page === 'index' ? '#FFE14F' : deg === 0 ? '#3EDA69' : '#F8F8F8' // 进度条背景颜色
const pc = page === 'index' ? '#fff' : '#FF6036' // 进度颜色
let ctx
if (This.ctx) {
ctx = This.ctx
} else {
ctx = wepy.createCanvasContext('canvas', This)
}
ctx.strokeStyle = bgc
ctx.setLineCap('round')
ctx.setLineWidth(pw)
// 半径需要减去二分之一的进度条宽度
ctx.arc(r + 5, r + 5, page === 'index' ? r - 3 : r - 2.5, 0, Math.PI * 2)
ctx.stroke()
if (deg !== 0) {
ctx.beginPath()
ctx.strokeStyle = pc
ctx.arc(r + 5, r + 5, page === 'index' ? r - 3 : r - 2.5, Math.PI / 2, Math.PI / 2 + Math.PI * 2 * deg)
ctx.stroke()
}
if (page === 'index') {
ctx.strokeStyle = '#fff'
ctx.beginPath()
ctx.setLineWidth(1)
ctx.arc(r + 5, r + 5, r, 0, Math.PI * 2)
ctx.stroke()
ctx.beginPath()
ctx.arc(r + 5, r + 5, r - pw, 0, Math.PI * 2)
ctx.stroke()
ctx.beginPath()
const x = r + 5 + (r - 3) * Math.cos(Math.PI / 2 + Math.PI * 2 * deg)
const y = r + 5 + (r - 3) * Math.sin(Math.PI / 2 + Math.PI * 2 * deg)
ctx.arc(x, y, 6, 0, Math.PI * 2)
ctx.setFillStyle('#fff')
ctx.fill()
}
ctx.draw()
}
}
}
</script> <style lang="less">
canvas {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>
canvas绘制进度条(wepy)的更多相关文章
- Unity3D中灵活绘制进度条
有时我们需要在Unity3D中绘制进度条,如: 或 如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲.我搜到的大多数方法都是用NGUI插件,但有时只是 ...
- knova绘制进度条
效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- WPF Canvas实现进度条
原文:WPF Canvas实现进度条 先看效果图: 思路: 一个Canvas做背景,一个Canvas用来显示进度,图片放在显示进度的Canvas中,靠右设置为图片本身宽度一半的距离,视觉上实现以图片中 ...
- canvas环形进度条
<style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...
- 用初中数学知识撸一个canvas环形进度条
周末好,今天给大家带来一款接地气的环形进度条组件vue-awesome-progress.近日被设计小姐姐要求实现这么一个环形进度条效果,大体由四部分组成,分别是底色圆环,进度弧,环内文字,进度圆点. ...
- canvas圆形进度条
通过定义一个canvas标签, new方法传进ID值,和旋转角度值,即可生成圆形进度条 <!DOCTYPE html> <html lang="en"> & ...
- css绘制进度条,持续转动的进度条
//只有 progress pregress-par bar,进度条不会转, //增加 active 这个类,进度条会转, //html结构 <div class='progress activ ...
- canvas圆形进度条(逆时针)
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- html5 canvas画进度条
这个ie8的兼容是个问题,ie8 的innerHTML有问题啊,添加两个附件吧 <!DOCTYPE html> <html> <head> <meta cha ...
随机推荐
- Service学习笔记
一 什么是Service Service作为安卓四大组件之一,拥有重要的地位.Service和Activity级别相同,只是没有界面,是运行于后台的服务.这个运行“后台”是指不可见,不是指在后台线程中 ...
- Golang学习-第二篇 搭建一个简单的Go Web服务器
序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...
- sosi-statistics
set echo offset scan onset lines 150set pages 66set verify offset feedback offset termout offcolumn ...
- pathmunge
pathmunge是linux系统redhat系列版本系统变量/etc/profile中的函数 判断当前系统的PATH中是否有该命令的目录,如果没有,则判断是要将该目录放于PATH之前还是之后 pat ...
- 设置XShell快捷键 复制粘贴 并禁用智能选择
设置XShell快捷键 复制粘贴 并禁用智能选择 1打开选项 2键盘和鼠标->打开编辑 3新建 组合键 Ctrl+C 类型:菜单 ->操作 [编辑]复制 [编辑]粘贴 4选中 ctrl+ ...
- Deep Learning(2)
二.Deep Learning的基本思想和方法 实际生活中,人们为了解决一个问题,如对象的分类(对象可是是文档.图像等),首先必须做的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象,如文本 ...
- Sql Server CPU 性能排查及优化的相关 Sql
Sql Server CPU 性能排查及优化的相关 Sql 语句,非常好的SQL语句,记录于此: --Begin Cpu 分析优化的相关 Sql --使用DMV来分析SQL Server启动以来累计使 ...
- 排序问题Java
package zhuzhuangtu; import java.util.*; import java.io.*; public class Main{ public static void mai ...
- CCPC-Wannafly Winter Camp Day5 (Div2, onsite)
Replay: Dup4: 时间复杂度算不对? 一点点思路不经过验证就激动的要死? 浪费自己一个小时还浪费别人一个小时? 对1e3不敏感? 1e3 * 1e3是多少? 模拟建边跑dp不写非要写个大模拟 ...
- uva473
Raucous Rockers You just inherited the rights to n previously unreleased songs recorded by the pop ...