本来想用css3来实现,发现轮廓边上残影严重,所以直接用小程序的canvas使用来。
最终效果如下:

我的整页代码如下,里面已经写出备注来。

<template><div class="statistic"><canvas canvas-id="runCanvas" id="runCanvas" class='canvas'></canvas></div>
</template>
<script>export default {data() {return {}},methods: {run(x0, y0, nowPercent) {// 1° 设置配置参数// 环形的线宽度const lineWidth = 16;// 半径const radius = x0 - lineWidth;// 起始弧const sAngle = -0.5 * Math.PI;// 终止弧let eAngle = (2 * Math.PI / 100 * nowPercent) - 0.5 * Math.PI;// 2° 画圆环阴影this.ctx2.setLineWidth(16);this.ctx2.setStrokeStyle('#d2d2d2');this.ctx2.setLineCap('round')this.ctx2.arc(x0, y0, radius, 0, 2 * Math.PI, false);//对当前路径进行描this.ctx2.stroke();// 3° 画圆环激活高亮部分this.ctx2.beginPath();//开始一个新的路径this.ctx2.setLineWidth(16);this.ctx2.setStrokeStyle('#00D49F');this.ctx2.setLineCap('round')this.ctx2.arc(x0, y0, radius, sAngle, eAngle, false);this.ctx2.stroke();// 4° 设置环心字体this.ctx2.beginPath();// 字体大小 注意不要加引号this.ctx2.font = 'normal bold 40px sans-serif';// 字体颜色this.ctx2.setFillStyle("#00D49F");// 字体位置this.ctx2.setTextAlign("center");// 字体对齐方式this.ctx2.setTextBaseline("middle");// 文字内容和文字坐标this.ctx2.fillText(nowPercent + "%", x0, y0);// 5°最后通过draw把上面的描述绘制出来this.ctx2.draw();},draw(id, percent) {this.ctx2 = wx.createCanvasContext(id);const that = this;wx.createSelectorQuery().select('#' + id).boundingClientRect(function (rect) { //监听canvas的宽高// 获取圆心坐标var x0 = parseInt(rect.width / 2); //获取canvas宽的的一半var y0 = parseInt(rect.height / 2); //获取canvas高的一半,// 开始画画that.run(x0, y0, percent);}).exec();},},mounted() {this.draw('runCanvas', 50);}
}
</script><style lang="less" scoped>.canvas {width: 150px;height: 150px;position: absolute;left: 0;top: 0;bottom: 0;right: 0;margin: auto auto;z-index: 99;}
</style>
<style lang="less">page {background: white;}
</style>

小程序 mpvue 使用canvas绘制环形图表相关推荐

  1. 在H5、微信小程序中使用canvas绘制二维码、分享海报

    在H5.微信小程序中使用canvas绘制二维码.分享海报 文章目录 在H5.微信小程序中使用canvas绘制二维码.分享海报 前言 一.canvas绘制二维码 1.H5中使用canvas 2.微信小程 ...

  2. 微信小程序之基于canvas绘制高铁线路图

    前几天@天下雪 给了我一张高铁的路线图,问我能不能用canvas画出来,所以我就试了试,我的思路可能比较复杂:如果有更简单的思路可以留言回复: 关注微信公众号,获取源码和教程 下面说一下我的实现思路: ...

  3. 小程序之基于canvas绘制高铁线路图

    前几天@天下雪 给了我一张高铁的路线图,问我能不能用canvas画出来,所以我就试了试,我的思路可能比较复杂:如果有更简单的思路可以留言回复: 关注微信公众号,获取源码和教程 下面说一下我的实现思路: ...

  4. 用微信小程序开发的Canvas绘制可配置的转盘抽奖

    使用https://github.com/givebest/GB-canvas-turntable代码移植过而来. 其它 微信小程序感觉是个半成品,代码移植过程比较繁琐麻烦.canvas API 部分 ...

  5. 小程序中使用canvas绘制海报

    最近项目需求使用canvas绘制朋友圈可分享的海报,中间遇到很多问题,于是上网搜索,完美解决后,在此总结一下. 先来看一下效果图,点击按钮生成带二维码的图片. 1.关于canvas画布的宽度和高度 w ...

  6. 微信小程序开发—(八)canvas绘制图形

    一.小知识 (1).API接口 (2).context 对象的方法列表 二.步骤 wxml中: <canvas canvas-id="myCanvas" class=&quo ...

  7. 小程序水印照片canvas绘制网络图和本地图加载空白的解决方案

    功德+1 功德+1 功德+1 效果图 遇到问题 在图片onload中,绘制水印,水印含网络图logo和本地图的图片.在使用**wx.canvasToTempFilePath()**生成图片时,logo ...

  8. 微信小程序:wx-charts动态绘制折线图

    微信小程序:wx-charts动态绘制折线图 wx-charts是基于 Canvas的微信小程序主流图表工具,体积小易操作,支持多种图表的绘制,这里主要就动态绘制折线图做出详解,所谓动态,指的是表格的 ...

  9. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈

    小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈 一.概述 需要用到的生成二维码组件(可自行下载添加到小程序根目录utils里):https://github.com/demi52 ...

最新文章

  1. SpringBoot (四) :SpringBoot整合使用JdbcTemplate
  2. java在己有的类创子类怎么创_如何使用Java创建自己的异常子类
  3. pandas 的describe的参数含义
  4. jQuery easyui刷新当前tabs
  5. android 7.0 更新apk,Android更新apk兼容7.0和8.0
  6. mysql安装后无法启动和连接问题
  7. 安装 openSUSE Leap 42.1 之后要做的 8 件事
  8. Sql Server全局变量(转)
  9. sqlserver2000给账户授予所有的权限_内网渗透 | 域内权限解读
  10. Windows 7如何限制运行特定的应用程序(转载)
  11. [Java] 蓝桥杯 BASIC-9 基础练习 特殊回文数
  12. 你该学点HTML/CSS知识的9大理由
  13. 动态内存分配(c++)
  14. 八皇后-韩顺平java
  15. android studio systrace,Android Systrace 基础知识 -- Systrace 简介
  16. php 获取一年中的节假日,PHP开发节假日时间表
  17. 小程序请求openid错误码40163
  18. 湖北省武汉市社会保险参保缴费查询
  19. 给自己一个不断学习的理由
  20. linux 删除乱码文件名的文件

热门文章

  1. 工作335:uni-增加表单验证
  2. [vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢
  3. 工作241:判断数组里面是否有某个值
  4. 前端学习(2638):读懂代码之登录页login.vue之ref和rules
  5. 前端学习(2611):vuex实现增加
  6. “约见”面试官系列之常见面试题第十四篇之所有数据类型(建议收藏)
  7. 前端学习(1759):前端调试值之调试安卓设备的方法
  8. 前端学习(1385):多人管理项目5抽离
  9. 前端学习(715):数组新增元素
  10. 第二十八期:Notepad++ 新 Logo 出炉,官网全新改版采用自适应设计