restore 第二次无效
发布于 6 年前 作者 lixue 16607 次浏览 来自 问答

restore  模拟器上没有问题。。。真机 iphone7Plus  第二次以上无法触发。。。后续的绘制只能在 

clip  的区域里面的会显示

3 回复

深坑,画多图的话只能尝试专门用另一个canvas来clip

以clip的例子 。。。。在模拟器上可以出现三个微信的图标。。在手机上只会出现两个。。。第二个以后的restore就无法  恢复之前保存的绘图上下文 

     const ctx = wx.createCanvasContext(‘myCanvas’);

      
  wx.downloadFile({
  url: ‘http://is5.mzstatic.com/image/thumb/Purple128/v4/75/3b/90/753b907c-b7fb-5877-215a-759bd73691a4/source/50x50bb.jpg’,
  success: function(res) {
      ctx.save()
      ctx.beginPath()
      ctx.arc(50, 50, 25, 0, 2*Math.PI)
      ctx.clip()
      ctx.drawImage(res.tempFilePath, 25, 25)
      ctx.restore()

        wx.downloadFile({
          url: ‘http://is5.mzstatic.com/image/thumb/Purple128/v4/75/3b/90/753b907c-b7fb-5877-215a-759bd73691a4/source/50x50bb.jpg’,
          success: function(res) {
              ctx.save()
              ctx.beginPath()
              ctx.arc(150, 150, 25, 0, 2*Math.PI)
              ctx.clip()
              ctx.drawImage(res.tempFilePath, 125, 125)
              ctx.restore()

                wx.downloadFile({
                  url: ‘http://is5.mzstatic.com/image/thumb/Purple128/v4/75/3b/90/753b907c-b7fb-5877-215a-759bd73691a4/source/50x50bb.jpg’,
                  success: function(res) {
                      ctx.save()
                      ctx.beginPath()
                      ctx.arc(250, 250, 25, 0, 2*Math.PI)
                      ctx.clip()
                      ctx.drawImage(res.tempFilePath, 225, 225)
                      ctx.restore()
                      ctx.draw()
                  }
                })
          }
        })
  }
})

你好,请具体描述问题出现的流程,并提供能复现问题的简单代码示例。

回到顶部