收藏
回答

canvas-2d 绘制海报异常退出?

const query = wx.createSelectorQuery(); 
query.select('#canvasBox').fields({   			// 需要获取的节点相关信息
  node: true,       // 是否返回节点对应的 Node 实例
  size: true         // 是否返回节点尺寸(width height)
}).exec((res) => {
   const canvas = res[0].node;              // canvas就是我们要操作的画布节点
   this.canvas = canvas;
   const ctx = canvas.getContext('2d')  
  const qrImg = canvas.createImage();
  qrImg.src = this.headerImg.path;
  qrImg.onload = ()=>//绘制二维码  
        ctx.drawImage(qrImg,0,0,320,320);
        ctx.restore();
        //还能打印日志到这边
        const measure=ctx.measureText(this.title).width;   //绘制到这边就异常退出,this.title是有值的,可能有emoji
       //此行执行不到
  }
});
//在弱网络环境下容易崩溃退出小程序
回答关注问题邀请回答
收藏

1 个回答

  • Listen
    Listen
    2021-12-09
    碰到过,ctx.measureText  这个方法在iOS机型上巨慢,自己写个函数处理
    
      /**
       * 计算文字宽度
       * @param {Number} fontSize 字体大小
       * @param {String} str 文字
       */
     function measureText (fontSize, str) {
        if (!str) return 0
        if (typeof str !== 'string') {
          str += ''
        }
        return (str.replace(/[^\x00-\xff]/g, 'ab').length / 2) * fontSize
      }
    


    2021-12-09
    有用
    回复 2
    • 野之草
      野之草
      2021-12-09
      就是卡在这个函数上,然后就退出整个小程序
      2021-12-09
      回复
    • Listen
      Listen
      2021-12-09回复野之草
      所以让你不要用 ctx.measureText  , 试试我的这个函数
      2021-12-09
      回复
登录 后发表内容