钉钉小程序 + canvas实现环形进度条

1、在页面上添加 canvas 元素

<!-- 如果需要在高 dpr(设备像素比) 下取得更细腻的显示,需要先将 canvas 用属性设置放大,再用样式缩写 -->
<canvas id="canvasId" width="{
    {200 * pixelRatio}}" height="{
    {200 * pixelRatio}}" style="width:200px;height:200px;background:pink"/>

2、完成绘制圆环

  1. 代码演示
Page({
   
  data: {
   
    pixelRatio: '',
  },
  onLoad() {
   
    var _this = this;
    // 获取到设备的像素比,并根据像素比设置canvas画布的缩放比例
    dd.getSystemInfo({
   
      success: (res) => {
   
        _this.setData({
   
          pixelRatio: res.pixelRatio
        })
      }
    })
  },
  onReady() {
   
    // 页面加载完成
    var _this = this;

    // dd.createSelectorQuery() 获取一个节点查询对象 SelectorQuery;
    // selectorQuery.select(selector) 选择当前第一个匹配选择器的节点,选择器支持 id 选择器以及 class 选择器
    // selectorQuery.boundingClientRect() 将当前所选择节点的位置信息放入查询结果,返回对象包含 width/height/left/top/bottom/right
    // selectorQuery.exec(callback) 将查询结果放入 callback 回调中。查询结果为数组,每项为一次查询的结果,如果当前是节点列表,则单次查询结果也为数组。注意 exec 必须放到onReady函数里调用
    dd.createSelectorQuery().select("#canvasId").boundingClientRect().exec(res => {
   
      // 环形进度条变量
      let canvasWidth = res[0].width; // canvas元素的宽
      let canvasHeight = res[0].height;  // canvas元素的高
      let outerRadius = 180 // 外环半径
      let thickness = 40 // 圆环厚度
      let innerRadius = outerRadius - thickness // 内环半径
      let x = 0 // 圆心x坐标
      let y = 0 // 圆心y坐标
      let startAngle = -90 //开始角度
      let endAngle = 180 //结束角度

      // 创建绘图上下文
      var ctx = dd.createCanvasContext('canvasId');
      // 将绘图原点移到画布中央,注意:移动的距离不是style里宽高的一半,而是属性设置里宽高的一半,所以需要先*设备像素比再/2
      ctx.translate(canvasWidth * _this.data.pixelRatio / 2, canvasHeight * _this.data.pixelRatio / <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值