微信小程序:解决canvas错位的问题

问题:
使用canvas绘制二维码,当页面滚动时,二维码发生错位

解决方法:
将canvas通过wx.canvasToTempFilePath转为图片,页面通过image显示该图片即可

wxml页面canvas代码,通过css隐藏不显示

<!-- 兑换二维码 -->
<!-- 通过css(position:fixed; left:100%;)隐藏canvas -->
<canvas
    type="2d"
    id="qrcode"
    style="width:{{qr_width}}rpx; height:{{qr_width}}rpx; position:fixed; left:100%;"></canvas>

js代码

    // 生成兑换码
    generateExchangeQrcode(idx) {
        var that = this
        let text = JSON.stringify({
            coid: that.data.customer_openId,
            egp: that.data.merchant_info.meg[idx].p,
        })
        const query = wx.createSelectorQuery()
        query.select('#qrcode')
            .fields({ node: true, size: true })
            .exec((res) => {
                // 生成二维码
                const canvas = res[0].node
                drawQrcode({
                    canvas: canvas,
                    canvasId: 'qrcode',
                    width: that.data.qr_width,
                    padding: 25,
                    background: '#ffffff',
                    foreground: '#000000',
                    text: text,
                })
                // 保存二维码绘制结果到小程序临时目录
                that.saveExchangeQrcode2TempFilePath(canvas)
            })
    },

    // 保存二维码绘制结果到小程序临时目录
    saveExchangeQrcode2TempFilePath(canvas) {
        var that = this
        wx.canvasToTempFilePath({
            canvas: canvas,
            success(res) {
                that.setData({ 
                    exchangeQrcodeFilePath: res.tempFilePath,
                })
            },
            fail(err) {
                console.log(err)
            }
        })
    },
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容