收藏
回答

使用Canvas画二维码的问题。

问题模块 框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 Bug Android Android9 EMUI9.1.0 荣耀9i 7.0.4

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

使用Canvas绘制二维码时,有部份Android用户反馈有时显示正常,有时不显示或显示一半,IOS不会有问题,本人的Android是小米6X也不会出现BUG。以下是我的代码

  var QRErrorCorrectLevel = this.data.qrErrorCorrectLevel;

   var options = this.data.options;

   options.text = this.data.qrcodetxt;


   var ctx = wx.createCanvasContext('firstCanvas')


   var moduleCount = this.data.qrCodeData.moduleCount;


   var tileW = options.width / moduleCount;

   var tileH = options.height / moduleCount;


   for (var row = 0; row < moduleCount; row++) {

     for (var col = 0; col < moduleCount; col++) {


       var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));

       var h = (Math.ceil((row + 1) * tileH) - Math.floor(row * tileH));


       ctx.setFillStyle(this.data.qrCodeData.point[row][col])

       ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);

     

     }

   }

   ctx.draw();

- 预期表现

每一次都能正常绘制

- 复现路径


- 提供一个最简复现 Demo


 我用




最后一次编辑于  06-06  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 是柿子啊
    是柿子啊
    06-10

    麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    06-10
    赞同
    回复 2
    • 天涯浪人
      天涯浪人
      06-17

      已经写明了!

      问题模块框架类型问题类型操作系统操作系统版本手机型号微信版本
      客户端小程序BugAndroidAndroid9 EMUI9.1.0荣耀9i7.0.4

        var QRErrorCorrectLevel = this.data.qrErrorCorrectLevel;

         var options = this.data.options;

         options.text = this.data.qrcodetxt;


         var ctx = wx.createCanvasContext('firstCanvas')


         var moduleCount = this.data.qrCodeData.moduleCount;


         var tileW = options.width / moduleCount;

         var tileH = options.height / moduleCount;


         for (var row = 0; row < moduleCount; row++) {

           for (var col = 0; col < moduleCount; col++) {


             var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));

             var h = (Math.ceil((row + 1) * tileH) - Math.floor(row * tileH));


             ctx.setFillStyle(this.data.qrCodeData.point[row][col])

             ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);

           

           }

         }

         ctx.draw();


      06-17
      回复
    • 是柿子啊
      是柿子啊
      06-17回复天涯浪人

      代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)这个格式的

      06-17
      回复