收藏
回答

canvas的fillRect函数计算出来的像素值显示不正确,并且真机调试不显示且报错

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas.fillRect() 微信安卓客户端 7.0.22 2.14.3

当真机调试断开后,手机可以看到像开发工具里面的样子,按理说红色区域的左上角离上面和左面的距离应该是一样的,但是显示却不是这样的,希望解答一下

复现代码已贴出,点击链接即可查看

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

1 个回答

  • Derek
    Derek
    2021-01-09

    我今天又反复测试了一下,发现你们官方人员对画布封装的有问题,只有当canvas的高和宽的比值为1:2的时候像素值才能计算正确,只要不是这个比值关系,都会计算错误,但这是有问题的,在实际应用中根本运用不起来

    请看一下示例:

    示例一

    wxml:
    <canvas class="canvas1" type="2d" style="height:200px;width:400px;background-color:#f1f1f1"></canvas>
    wxjs:
    onShow: function () {
        wx.createSelectorQuery().select(".canvas1").node(res=>{
          console.log(res)
          var canvas = res.node
          var x = canvas.getContext('2d')
          x.fillStyle = "red"
          x.rect(101015040)
          x.fill()
        }).exec()
      },
    

    示例二

    wxml:
    <canvas class="canvas1" type="2d" style="height:400px;width:400px;background-color:#f1f1f1"></canvas>
    wxjs:
    onShow: function () {
        wx.createSelectorQuery().select(".canvas1").node(res=>{
          console.log(res)
          var canvas = res.node
          var x = canvas.getContext('2d')
          x.fillStyle = "red"
          x.rect(101015040)
          x.fill()
        }).exec()
      },
    

    示例三

    wxml:
    <canvas class="canvas1" type="2d" style="height:100px;width:400px;background-color:#f1f1f1"></canvas>
    wxjs:
    onShow: function () {
        wx.createSelectorQuery().select(".canvas1").node(res=>{
          console.log(res)
          var canvas = res.node
          var x = canvas.getContext('2d')
          x.fillStyle = "red"
          x.rect(101015040)
          x.fill()
        }).exec()
      },
    

    2021-01-09
    有用
    回复 2
登录 后发表内容
问题标签