美文网首页
微信小程序canvas绘制问题

微信小程序canvas绘制问题

作者: 4c8fd9ddcb74 | 来源:发表于2021-07-08 17:41 被阅读0次

该项目使用uni-app
1、由于微信小程序使用canvas如果过多调用draw()方法【绘制点,线等】,会导致绘制出现延时问题,所以在保证同一时间所绘制的点不要太多的情况下进行绘制,避免出现卡顿;
2、在1的基础上,如果反复在canvas上绘制,当绘制足够多的情况下仍然会出现卡顿的情况,这情况下就重新在当前界面绘制的图形生成图片路径canvasToTempFilePath,然后绘制drawImage
vue代码

<canvas class="handWriting " disable-scroll="true" @touchstart="uploadScaleStart"
            @touchmove="uploadScaleMove" @touchend="uploadScaleEnd" @tap="mouseDown" :canvas-id="canvasName">
        </canvas>

js 代码

// 笔迹结束
           uploadScaleEnd(e) {
                this.canvasToTempFilePath()
            },
        canvasToTempFilePath(success, error) {
                var that = this;
                uni.canvasToTempFilePath({
                    canvasId: this.canvasName,
                    success: (res) => {
                        if (success) {
                            success(res.tempFilePath);
                        }
                        that.drawCacheImage(res.tempFilePath);
                    },
                    fail: (res) => {
                        console.log(res)
                        if (error) {
                            error(res)
                        }
                    },
                    complete: (res) => {
                        console.log(res)
                    }
                }, this);
            },
             drawCacheImage(path,canvasName){
            var ctx = this.ctx;
                ctx.drawImage(path, 0, 0, this.canvasWidth, this.canvasHeight);
                ctx.draw();
            }

当然可以使用两个canvas 进行缓存绘制,然后控制z-index来切换显示图层,但是在小程序上会看到明显的闪屏现象,因此两个canvas文案有点缺陷

相关文章

网友评论

      本文标题:微信小程序canvas绘制问题

      本文链接:https://www.haomeiwen.com/subject/pnytpltx.html