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 ...
随机推荐
- SaltStack配置管理-状态间关系
上一篇:SaltStack配置管理-LAMP状态设计 include包含 上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装 lamp.sls include: - apache ...
- Day24-26 项目练习(图书商城)
图书商城 环境搭建 导入原型 用户模块 分类模块 图书模块 购物车模块 订单模块 2 功能分析 前台 用户模块: 注册 激活 登录 退出 分类模块: 查看所有分类 图书模块: 查询所有图书 按分类 ...
- LockSupport HotSpot里park/unpark的实现
每个java线程都有一个Parker实例,Parker类是这样定义的: class Parker : public os::PlatformParker { private: volatile int ...
- python初识(二)
目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...
- HDU1452:Happy 2004(求因子和+分解质因子+逆元)上一题的简单版
题目链接:传送门 题目要求:求S(2004^x)%29. 题目解析:因子和函数为乘性函数,所以首先质因子分解s(2004^x)=s(2^2*x)*s(3^x)*s(167^x); 因为2与29,166 ...
- PAT Sum of Number Segments[数学问题][一般]
1104 Sum of Number Segments(20 分) Given a sequence of positive numbers, a segment is defined to be a ...
- zlib编译安装
从http://www.zlib.net/下载了最新的源代码 zlib提供了vs sln文件,在zlib-1.2.8\contrib\vstudio\目录有 其中的zlibstat是编译为静态库zli ...
- spring基础-01
IOC : inversion of 缩写, DI:dependency injection 即在调用者中注入被调用者的实例. AOP 面向切面编程,是代理模式的体现.spring默认使用JDK的动态 ...
- Ubuntu vim java 自动补全javacomeplete2
一 安装vundle $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 默认安装在/.v ...
- ACM-ICPC 2018 沈阳赛区网络预赛 Solution
A. Gudako and Ritsuka 留坑. B. Call of Accepted 题意:定义了一种新的运算符$x d y$ 然后给出中缀表达式,求值 思路:先中缀转后缀,然后考虑如何最大如何 ...