收藏
回答

canvas的fillRect与drawImage问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas 工具 开发者工具 2.2.1

- 当前 Bug 的表现(可附上截图)

  1. filleRect后,clip圆型区域画图片变成了方的了




- 预期表现

1.图片是圆的而不是方的


- 复现路径



- 提供一个最简复现 Demo

draw: function() {

const ctx = wx.createCanvasContext('test1')


// save the default fill style

ctx.save()

ctx.setFillStyle('blue')

ctx.fillRect(10, 10, 150, 100)

// restore to the previous saved state

ctx.restore()


// ctx.save()

// ctx.setFillStyle('red');

// ctx.fillRect(50, 50, 150, 100)

// ctx.restore()


ctx.save()

ctx.beginPath()

ctx.arc(100, 50, 25, 0, 2 * Math.PI)

ctx.clip()

ctx.setFillStyle('yellow');

ctx.fill()

ctx.drawImage('/images/wx.jpg', 75, 25, 50, 50)

ctx.restore()



ctx.draw()

}


回答关注问题邀请回答
收藏

2 个回答

  • 2019-01-04

    我也遇到了同样的问题,先fillRect,再调用clip就发现画不出原型了,来这里找答案了,试了楼主的ctx.fillRect(0000)确实可以,只能先这样了,期待官方的回答。

    2019-01-04
    有用
    回复
  • 2018-11-24

    我也遇到了 只要clip在fillRect下,圆形就会失效

    2018-11-24
    有用
    回复 1
    • beautymyth
      beautymyth
      2018-11-24

      ctx.save()

      ctx.setFillStyle('blue')

      ctx.fillRect(1010150100)

      ctx.fillRect(0000)//这样可正常显示,不知为啥。不过不改在手机上调试也是正常的,只是开发工具有问题

      // restore to the previous saved state

      ctx.restore()


      2018-11-24
      回复
登录 后发表内容