可能是因为第一次点击按钮时,只是触发了绘图的动作,但并没有将绘制的结果显示出来。第二次点击按钮时,才会将之前绘制的结果进行渲染并显示在页面上。

要解决这个问题,可以在绘制完成后,手动调用 canvas.toTempFilePath() 方法将绘制结果转换为临时文件路径,并将该路径设置为 <image> 组件的 src 属性,从而实现即时显示。具体代码如下:

// 在 button 的点击事件中绘制图形
onButtonTap() {
  const context = wx.createCanvasContext('myCanvas');

  // 绘制图形
  // ...

  // 绘制完成后,将绘制结果转换为临时文件路径
  context.draw(false, () => {
    wx.canvasToTempFilePath({
      canvasId: 'myCanvas',
      success: (res) => {
        // 将临时文件路径设置为 <image> 组件的 src 属性
        this.setData({
          imagePath: res.tempFilePath
        });
      }
    });
  });
}

然后,在页面中添加一个 <image> 组件,并将 imagePath 绑定到 src 属性上:

<image src="{{imagePath}}" mode="aspectFit"></image>

这样,在点击按钮后,绘制结果就能即时显示在页面上了


原文地址: https://www.cveoy.top/t/topic/h8rp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录