陌上华年
陌上华年
  • 发布:2022-02-18 00:32
  • 更新:2022-04-18 15:42
  • 阅读:825

【报Bug】vue3 H5和APP的canvas 无法clip和绘制两张图以上

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: Alpha

HBuilderX版本号: 3.3.11

浏览器平台: Chrome

浏览器版本: 88.0.4324.104

项目创建方式: HBuilderX

操作步骤:
<canvas style="width: 400px; height: 400px;" canvas-id="firstCanvas" id="firstCanvas"></canvas>
export default {  
        data() {  
            return {}  
        },  
        methods: {  
            getImageInfo(src) {  
                return new Promise( resolve => {  
                    uni.getImageInfo({  
                        src,  
                        success(res) {  
                            resolve(res)  
                        }  
                    })  
                })  
            },  
        },  
        async mounted() {  
            var context = uni.createCanvasContext('firstCanvas', this)  
            context.setStrokeStyle("#00ff00")  
            context.setLineWidth(5)  
            context.rect(10, 10, 350, 388)  
            context.stroke()  

            context.save()  
            context.setFillStyle("#ff0000")  
            context.beginPath()  
            context.arc(100, 100, 60, 0, 2 * Math.PI)  
            context.closePath()  
            context.fill()  
            context.clip()  
            const {path: path0} = await this.getImageInfo('https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg')  
            context.drawImage(path0, 100, 0, 200, 200)  
            context.restore()  

            context.save()  
            context.setFillStyle("#000000")  
            context.beginPath()  
            context.arc(100, 250, 60, 0, 2 * Math.PI)  
            context.closePath()  
            context.fill()  
            context.clip()  
            const {path: path1} = await this.getImageInfo('https://imgcps.jd.com/ling4/100016514918/5LiA4oCc5LyB4oCd5byA6Zeo57qi/5Yqe5YWs6K6-5aSH54iG5qy-5LiT5Lqr/p-5bd8253082acdd181d02f9df/0b68e957/cr/s/q.jpg')  
            context.drawImage(path1, 50, 100, 200, 200)  
            context.restore()  
            context.draw(false)  
        }  
    }

预期结果:

绘制了两个圆并裁切两张图

实际结果:

绘制了两个圆无法裁切 只绘制了一张图

bug描述:

vue3 H5和APP的canvas 无法clip和绘制两张图以上,vue2没有问题。
如图所示,代码一样vue3和vue2效果

2022-02-18 00:32 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_LXH

DCloud_UNI_LXH

alpha 3.4.6 已修复

陌上华年

陌上华年 (作者)

顺便把ios app下的getImageInfo修复一下~~~

DCloud_UNI_LXH

DCloud_UNI_LXH

预计下版修复

临时解决方案:

将附件分别替换至:

  • HBuilder X根目录\plugins\uniapp-cli-vite\node_modules\@dcloudio\uni-h5\dist
  • HBuilder X根目录\plugins\uniapp-cli-vite\node_modules\@dcloudio\uni-app-plus\dist

重新运行项目

该问题目前已经被锁定, 无法添加新回复