1:首先写这篇文章的初衷是在现实开发中使用canvas遇到的一些问题,在这里将个人经验分享给有需要的人,希望对你有帮助,谢谢。
2:在开发中,有一个需求是根据后台返回来的素材生成一张海报(图片),用户可以保存到手机后分享好友或者发到朋友圈。刚开始时只有一个页面有这个需求,所有就在那个页面开始砌墙:
wxml:
<canvas style=“width: 375px;height: 667px;position:fixed;top:-9999px;left: -99999px;” canvas-id=“mycanvas” />
这里给canvas设置一些基本样式,使用定位将canvas移除视图
js:
var context = wx.createCanvasContext(‘mycanvas’)
context.fillStyle = “green”
context.fillRect(0, 0, 750, 1334)
context.save()
context.draw(true, setTimeout(function() {
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 375,
height: 674,
canvasId: ‘mycanvas’,
success: function(res) {
// do someing
}
})
}, 200))
这样完成了一个基本的绘制,success里做些事情就可以了。
后来需求改变需要在几个页面使用该功能,故新建了自定义组件,把代码照搬过来发现报错了,查看文档后:在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 canvas ,如果省略则不在任何自定义组件内查找,故对代码做如下修改:
var context = wx.createCanvasContext(‘mycanvas’, this)
wx.canvasToTempFilePath({}, this)
组件与自定义组件canvas绘制相关