什么情况才会出现 canvas 画图不在画布上?
发布于 5 年前 作者 dengjun 3441 次浏览 来自 问答

写了这个,但是有一定几率会出现下面的情况,很是无解。想问下,什么情况才会出现 canvas 画图不在画布上?

一定概率 = 刷新页面10次可能出现一次。

datas.forEach((e, index) => {
    _this.drawCircle(e.a * 1 / e.b * 1, 'canvas' + index, e.color)
})
//---------------------
 
  drawCircle: function (step, id, color) {
 
    var dpi = this.format_rpx()
    console.log('px', dpi)
     
    var ctx = wx.createCanvasContext(id);
 
    // 参数step 为绘制的圆环周长,从0到2为一周 。 -Math.PI / 2 将起始角设在12点钟位置 ,结束角 通过改变 step 的值确定
 
    // let bengen = (step * 2 - 0.5) * Math.PI;
    if(isNaN(step)){
      step = 1
    }
    let bengen = (step * 2) * Math.PI - Math.PI / 2
 
    console.log(step, id, step * 2 - 0.5)
    ctx.beginPath();
    ctx.setLineWidth(dpi.border);
    ctx.setStrokeStyle(color);
 
    ctx.arc(dpi.px, dpi.px, dpi.dot, -Math.PI / 2, bengen);
 
    ctx.stroke();
    // ctx.draw();
 
    ctx.beginPath();
    ctx.setStrokeStyle('#f0f0f0');
 
    ctx.arc(dpi.px, dpi.px, dpi.dot, bengen, 1.5 * Math.PI);
 
    ctx.stroke();
 
    ctx.setFontSize(20)
    ctx.setStrokeStyle('#666')
    ctx.setTextBaseline('middle')
    ctx.setTextAlign('center')
    // 转换百分比
    let num = Math.floor(step * 100) + '%'
    ctx.fillText(num, dpi.px, dpi.px)
    ctx.draw();
  },
1 回复

我也遇到了同样的问题,偶现画图不在画布上。求官方@  目前是ios出现了该问题

回到顶部