账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    微信小程序的自定义组件中使用canvas在真机上不显示绘制内容
    35
    0

    问题描述

    小程序的自定义组件我使用了canvas绘制,在开发工具上可以显示canvas绘制的内容,但是在真机上不显示,而在真机上打开调试又可以显示,是什么原因?。

    相关代码

    如下:
    methods: {

    openfun() {
      let that= this;
      wx.downloadFile({
        url: that.data.avatarUrl,
        success: function (res) {
          // console.log(res.tempFilePath);
          that.setData({
            avatarUrl:res.tempFilePath,
          })
          //绘图方法
          that.drawImage();
    
        }, fail: function (fres) {
    
        }
      })
    },
    drawImage:function() {
      //绘制canvas图片
      var that = this
      const ctx = wx.createCanvasContext('sharePhoto',this)
      // console.log(wx.getSystemInfoSync())
      var Width = wx.getSystemInfoSync().windowWidth*0.74
      var Height = wx.getSystemInfoSync().windowHeight * 0.68
      var bgPath = '/pages/images/nimg557_1.jpg'
      var bgPath2 = '/pages/images/nimg456_1.png'
      var avatarUrl = that.data.avatarUrl
      //绘制图片
      ctx.drawImage(bgPath, 0, 0, Width, Height)
      ctx.drawImage(bgPath2, Width * 0.0897, Height*0.175, Width*0.818, Height*0.758)
      ctx.save();
      ctx.beginPath();
      ctx.arc(Width * 0.5, Height * 0.175, Width * 0.098, 0, 2 * Math.PI);
      ctx.clip();//画了圆 再剪切
      ctx.drawImage(avatarUrl, Width * 0.4, Height * 0.109, Width*0.197, Height*0.132)
      ctx.restore();
      ctx.textAlign = "center";
      ctx.font = "16rpx Arial";
      ctx.fillStyle = "#333";
      ctx.fillText(that.data.nickName, Width * 0.5, Height * 0.293, Width * 0.818);
      ctx.save();
      ctx.draw()
    },
    
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    请问有没有大神知道的?

    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 海森伯不确定关系 普通会员 1楼

      在微信小程序中,你不能直接在自定义组件中使用canvas来绘制内容,因为微信小程序的Canvas是用于在页面上绘制的,而不是用于自定义组件的。

      但是,你可以通过其他方式来实现你的需求,例如:

      1. 使用其他的库:有一些库可以让你在小程序中使用canvas,例如微信的“微信开发者工具”。

      2. 使用JavaScript:你可以直接在小程序的JavaScript代码中使用canvas来绘制内容,然后将这个内容传递给你的自定义组件。

      3. 使用其他技术:如果你想要在小程序中使用canvas,但又不想使用JavaScript,你可以考虑使用其他的技术,例如使用HTML5的Canvas API,或者使用SVG。

      无论你选择哪种方法,你都需要确保你的代码能够在真机上正常运行。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部