关于canvas组件
发布于 5 年前 作者 guiyinglai 8498 次浏览 来自 问答

 

function drawCanvas2(ePage, path, name, index, width,height) {

//  path为可用的图片链,width和height为计算出的适应图片的宽高

     ePage.setData({

       width:width,

       height:height

     })   // 此处是对canvas标签的宽高进行适应性改变,每次根据传入的大小动态改变canvas组件宽高

console.log(ePage.data.width,ePage.data.height)

           index = parseInt(index)

 

           const ctx = wx.createCanvasContext(name, ePage)

           ctx.clearRect(0, 0, width, height)

            ctx.save()

 

           ctx.drawImage(path, 0, 0, width, height)

           // const pattern = ctx.createPattern(path, ‘no-repeat’)

           // ctx.fillStyle = pattern

           // ctx.fillRect(0, 0, width * 0.15, width * 0.15)


           ctx.save()

            ctx.draw()

 

        wx.canvasToTempFilePath({ …// 此处为保存图片或者将绘画好的图片链接赋值到image标签})

}

“当只运行一次上述方法时,在开发者工具上显示正确的,然而在真机上canvas的宽高为上一次定义的大小”;

假如:width =800 height = 800 为默认值,现在传入width=500 height=500 ;当在真机上进行上述方法运行wx.canvasToTempFilePath时保存的图是在width=800 height=800 上绘画的效果, 再次运行,传入width=600 height=600  canvas绘制的大小是width=500 height=500 上的,

 进行代码适应上述改变:在方法执行前执行以下代码:

const ctx = wx.createCanvasContext(name, ePage)

           ctx.clearRect(0, 0, width, height)

ctx.draw();

注:先进行一次绘画使得宽高改变为想要的值再运行主方法,在真机上效果实现了,然而变的稍微卡了点,在开发者工具中无法将图片的链接赋值到image标签进行显示

开发者工具输出显示如下图,未运行至箭头处,ctx.draw()无输出 未执行,

然而在真机上运行正确,代码如下图


 

2 回复

说了一大堆。。没太理解。。要不做个代码片段吧。。

或者。。你不是要setData设置canvas的宽高吗?把后面的代码放到 this.setData({},()=>{}) 这个回调方法里试试

回到顶部