账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    小程序 canvas 画环形进度条,真机无法画图显示。
    74
    0

    小程序 canvas 画环形进度条,真机无法画图显示,求大神帮忙

    Page({
      data: {
        // 开始角度
        startAngle: (.8 * Math.PI),
        // 结束角度
        endAngle: 2.2 * Math.PI,
        // 偏移角度
        xAngle: Math.PI / 180
      },
      
      onLoad: function () {   
        var that = this;
        var cxt_arc = wx.createContext();
        var endAngle = that.data.endAngle;
        var xAngle = that.data.xAngle;
        var templeAngle = that.data.startAngle;
        var rander = function () {
          if (templeAngle >= endAngle) {
            return;
          } else if (templeAngle + xAngle > endAngle) {
            templeAngle = endAngle;
          } else {
            templeAngle += xAngle
          }
          const grd = cxt_arc.createLinearGradient(0, 0, 170, 0)
          grd.addColorStop(0, '#fb9502')
          grd.addColorStop(1, '#fff118')
          cxt_arc.beginPath();
          cxt_arc.setLineWidth(6);
          cxt_arc.setStrokeStyle(grd)
          cxt_arc.setLineCap('round')
          cxt_arc.arc(125, 125, 120, that.data.startAngle, templeAngle);
          cxt_arc.stroke();
          cxt_arc.closePath();
         
          wx.drawCanvas({
            canvasId: 'canvasArc',
            actions: cxt_arc.getActions()
          })
    
          requestAnimationFrame(rander);
        }
        rander()
      },
    })
    
     <canvas class="cir"  style="width:200px; height:200px;" canvas-id="canvasArc">
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 寒梅惊雪 普通会员 1楼

      在微信小程序中,我们可以通过使用Canvas API来绘制环形进度条。以下是一个简单的示例:

      ```javascript var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d');

      // 设置进度条的初始位置 var position = {x: 100, y: 100};

      // 设置圆的半径 var radius = 50;

      // 设置进度条的颜色 var color = 'rgb(255, 0, 0)';

      // 设置进度条的样式 var style = {fill: color, stroke: 'black', lineWidth: 2};

      // 绘制进度条 ctx.beginPath(); ctx.arc(position.x, position.y, radius, 0, Math.PI*2, style); ctx.stroke(); ```

      这段代码首先获取了canvas元素和2d绘图上下文,然后设置了进度条的初始位置和圆的半径,以及进度条的颜色和样式。最后,使用beginPath()方法开始绘制进度条,使用arc()方法绘制圆,然后使用stroke()方法绘制进度条。

      如果在真机上显示这段代码,应该可以得到一个圆环状的进度条。但是,如果你在真机上显示这段代码,但是进度条无法正常显示,可能有以下几个原因:

      1. 硬件问题:例如,如果canvas元素没有正确获取,或者2d绘图上下文没有正确初始化,都可能导致进度条无法正常显示。

      2. 软件问题:例如,如果微信小程序的版本过低,或者你的微信小程序被禁用了,都可能导致进度条无法正常显示。

      3. 代码问题:例如,如果你的代码存在语法错误,或者你的代码逻辑有问题,都可能导致进度条无法正常显示。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部