uniapp 绘制canvas注意事项

1、移动端绘制时,绘制完不可直接使用api进行截图。会失败。需要进行延时一下,再截图。

setTimeout(() => {
	    // @ts-ignore		// @ts-ignore 注释功能。这些注释是一种轻量级的方法来抑制下一行中出现的任何错误。
	    uni.canvasToTempFilePath({
	      x: 0,
	      y: 0,
	      width: 250, 	// 画布宽
	      height: 350,	// 画布宽
	      canvasId: 'myCanvas', 	// 画布id
	      fileType: 'jpg',	// 截取后图片类型
	      quality: 1,
	      success: (ress: any) => {
	        console.log(ress.tempFilePath)	// 图片临时路径
	      }
	    })
  }, 1000)

2、移动端绘制时,如果绘制了不存在的图片(例如:错误图片路径等等)。会直接导致绘制图片消失。

3、app分享api uni.share 可直接分享临时路径图片。

4、wx.loadFontFace(Object object)引入的字体
canvas在小程序端无法使用该方法引入的字体。
但是在微信开发者工具上会有效。
引入字体文件后缀要是.ttf,不能是大写的.TTF,否则android会翻车。
具体需要注意的地方要直接去查看文档。
(亲身实践,前车之鉴)

5、canvas在动画中会有样式显示问题
例如在一个底部弹窗动效中,该弹窗从底部弹出。在弹窗收回的过程中,canvas会有在视觉上停留一会的效果。导致看起来很奇怪。
该问题在手机调试时会出现,在ios,android,微信小程序都会出现。

解决办法:
最好的办法就是避免。
在底部弹窗中不要放置canvas,将canvas使用

wx.canvasToTempFilePath()

uni.canvasToTempFilePath()

进行截取生成一张临时路径的图片。
将该图片路径赋值给image标签。
然后用image标签代替canvas在底部弹窗中的位置。
这样就避开了这个问题。
(有时解决问题的最好办法就是避开问题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值