个人案例
预览正常
微信开发者工具上传代码、真机调试失败?微信开发者工具上传代码、真机调试失败 使用版本:Stable v1.02.1910120 [图片] [图片]
2019-11-01代码片段 https://developers.weixin.qq.com/s/iImNqymm7mch
微信小程序2.9.0及以上版本使用 canvas.getContext('2d')绘图出现异常?微信小程序2.9.0及以上版本使用 canvas.getContext('2d')绘图出现异常,高度会莫名其妙拉伸1倍,模拟器和真机均有此现象。 代码如下: wxml [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"container"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]canvas[代码] [代码]id[代码][代码]=[代码][代码]"canvas1"[代码] [代码]type[代码][代码]=[代码][代码]"2d"[代码] [代码]style[代码][代码]=[代码][代码]"width: 300px; height: 300px; background-color: #ffffff;"[代码][代码]></[代码][代码]canvas[代码][代码]> [代码][代码]</[代码][代码]view[代码][代码]>[代码]javscript [代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.createSelectorQuery()[代码][代码] [代码][代码].select([代码][代码]'#canvas1'[代码][代码])[代码][代码] [代码][代码].node()[代码][代码] [代码][代码].exec((res) => { [代码][代码] [代码][代码]this[代码][代码].init(res[0].node);[代码][代码] [代码][代码]}) ;[代码][代码] [代码][代码]},[代码][代码] [代码] [代码] [代码][代码]init(canvas) { [代码][代码] [代码][代码]var[代码] [代码]_context = canvas.getContext([代码][代码]'2d'[代码][代码])[代码][代码] [代码][代码]_context.scale(1, 1);[代码][代码] [代码][代码]_context.strokeStyle = [代码][代码]"#00ff00"[代码][代码] [代码][代码]_context.lineWidth = 1[代码][代码] [代码][代码]_context.rect(0, 0, 100, 100)[代码][代码] [代码][代码]_context.stroke()[代码][代码] [代码][代码]}[代码][代码]})[代码][图片] 经分析,2.9.0版本和2.8.3版本使用SelectorQuery获取Canvas节点返回高度存在不同。 javscript [代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.createSelectorQuery()[代码][代码] [代码][代码].select([代码][代码]'#canvas1'[代码][代码])[代码][代码] [代码][代码].node()[代码][代码] [代码][代码].exec((res) => { [代码][代码] [代码][代码]this[代码][代码].init(res[0].node);[代码][代码] [代码][代码]}) ;[代码][代码] [代码][代码]},[代码][代码] [代码] [代码] [代码][代码]init(canvas) { [代码][代码] [代码][代码]console.log([代码][代码]'width:'[代码][代码]+canvas.width, [代码][代码]'height:'[代码][代码]+canvas.height)[代码][代码] [代码][代码]console.log([代码][代码]'_width:'[代码][代码]+canvas._width, [代码][代码]'_height:'[代码][代码]+canvas._height)[代码][代码] [代码][代码]}[代码][代码]})[代码]2.8.3版本 [图片] 2.9.0版本 [图片] 临时解决方法: 用SelectorQuery获取Canvas节点后,设置canvas的width和height值 [代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.createSelectorQuery()[代码][代码] [代码][代码].select([代码][代码]'#canvas1'[代码][代码])[代码][代码] [代码][代码].node()[代码][代码] [代码][代码].exec((res) => {[代码][代码] [代码][代码]this[代码][代码].init(res[0].node);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]init(canvas) {[代码][代码] [代码][代码]console.log([代码][代码]'width:'[代码] [代码]+ canvas.width, [代码][代码]'height:'[代码] [代码]+ canvas.height)[代码][代码] [代码][代码]console.log([代码][代码]'_width:'[代码] [代码]+ canvas._width, [代码][代码]'_height:'[代码] [代码]+ canvas._height)[代码][代码] [代码][代码]canvas.width = canvas._width[代码][代码] [代码][代码]canvas.height = canvas._height[代码][代码] [代码][代码]var[代码] [代码]_context = canvas.getContext([代码][代码]'2d'[代码][代码])[代码][代码] [代码][代码]_context.scale(1, 1);[代码][代码] [代码][代码]_context.strokeStyle = [代码][代码]"#00ff00"[代码][代码] [代码][代码]_context.lineWidth = 1[代码][代码] [代码][代码]_context.rect(0, 0, 100, 100)[代码][代码] [代码][代码]_context.stroke()[代码][代码] [代码][代码]}[代码][代码]})[代码][图片]
2019-11-01