<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)的更多相关文章

  1. Unity3D中灵活绘制进度条

    有时我们需要在Unity3D中绘制进度条,如:           或        如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲.我搜到的大多数方法都是用NGUI插件,但有时只是 ...

  2. knova绘制进度条

    效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  3. WPF Canvas实现进度条

    原文:WPF Canvas实现进度条 先看效果图: 思路: 一个Canvas做背景,一个Canvas用来显示进度,图片放在显示进度的Canvas中,靠右设置为图片本身宽度一半的距离,视觉上实现以图片中 ...

  4. canvas环形进度条

    <style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...

  5. 用初中数学知识撸一个canvas环形进度条

    周末好,今天给大家带来一款接地气的环形进度条组件vue-awesome-progress.近日被设计小姐姐要求实现这么一个环形进度条效果,大体由四部分组成,分别是底色圆环,进度弧,环内文字,进度圆点. ...

  6. canvas圆形进度条

    通过定义一个canvas标签, new方法传进ID值,和旋转角度值,即可生成圆形进度条 <!DOCTYPE html> <html lang="en"> & ...

  7. css绘制进度条,持续转动的进度条

    //只有 progress pregress-par bar,进度条不会转, //增加 active 这个类,进度条会转, //html结构 <div class='progress activ ...

  8. canvas圆形进度条(逆时针)

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  9. html5 canvas画进度条

    这个ie8的兼容是个问题,ie8 的innerHTML有问题啊,添加两个附件吧 <!DOCTYPE html> <html> <head> <meta cha ...

随机推荐

  1. python重定向sys.stdin、sys.stdout和sys.stderr

    转自:https://www.cnblogs.com/guyuyuan/p/6885448.html 标准输入.标准输出和错误输出. 标准输入:一般是键盘.stdin对象为解释器提供输入字符流,一般使 ...

  2. QQ 空间过滤器 for V8

    最近 QQ空间升级到 V8 版本,做了很大的调整, 我也做了升级,由于时间关系,功能暂时只有 模块过滤,其他过滤请等待后续更新,谢谢大家的支持! 刚刚上线,不知道你们能否看到 https://chro ...

  3. nginx 与 浏览器缓存

    一.本地静态文件 location /html/{ rewrite ^(html/.*)$ /$1 break; root /data/static; expires 12h; etag off; i ...

  4. 【接口测试】接口概念及Json相关

    一.接口相关概念 1.什么是接口? 接口:接口就是系统A程序中留的其他系统B访问系统A的接口(实际上是系统某个代码文件下某一个可访问的方法.).其他系统B可以调用这个方法a对系统A中的方法a进行访问从 ...

  5. ARM上电启动及Uboot代码分析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27698707 注意:由于文档是去年 ...

  6. Redux 入门教程

    Redux 入门教程(三):React-Redux 的用法(53@2016.09.21) Redux 入门教程(二):中间件与异步操作(32@2016.09.20) Redux 入门教程(一):基本用 ...

  7. Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去(转载)

    转载自:https://blog.csdn.net/raintungli/article/details/70807376 当Executor进行reduce运算的时候,生成运算结果的临时Shuffl ...

  8. POJ2891:Strange Way to Express Integers(解一元线性同余方程组)

    写一下自己的理解,下面附上转载的:若a==b(modk);//这里的==指的是同余,我用=表示相等(a%k=b)a-b=kt(t为整数)以前理解的错误思想:以前认为上面的形式+(a-tb=k)也是成立 ...

  9. SCons构建工具使用

    scons是一个Python写的自动化构建工具,和GNU make相比优点明显:    1. 移植性:python能运行的地方,就能运行scons    2. 扩展性:理论上scons只是提供了pyt ...

  10. 5.6 Components -- Handling User Interaction with Actions

    1. 组件允许你定义可以在整个应用程序中重用的控件.如果它们够通用,它们也可以在被共享给其他人并且在许多应用程序中被使用. 2. 为了使一个可重用的控件有用,然而,你首先需要你的应用程序的用户和它交互 ...