作者回复: 好问题。 在小程序中的Canvas,可以通过样式控制画布大小: ``` WXML: <canvas style="width:{{canvasWidth}}px; height:{{canvasHeight}}px" disable-scroll="true"> </canvas> JS: let res = wx.getSystemInfoSync() let myCanvasWidth = res.windowWidth - 56 let myCanvasHeight = res.windowHeight - 200 this.setData({ canvasWidth: myCanvasWidth, canvasHeight: myCanvasHeight }) ``` 这样做了以后,画布虽然可以与屏幕适配了,但因为屏幕比例不同,画布内容产生了变形。这也是读者提到的问题。 针对这个变形的问题,有人是这样做的,先算出一个适配比例,再用这个比例值去影响每一次绘制: ``` //获取屏幕宽度,获取自适应单位 let res = wx.getSystemInfoSync() let unit = res.windowWidth/375 const context = wx.createCanvasContext("canvas"); context.drawImage(Url, 0, 0, 265 * unit, 262.5 * unit) ``` 这样做较为麻烦,但效果好,无论什么机型都可以充分利用屏幕。 还有一个更偷懒的办法是,允许有宽边、窄边有间隙,间隙可以用背景填充。将前面的 canvasWidth 与 canvasWidth 先计算好比例,或者将宽设置为 100rpx 或 100%,高度自适应,然后在Canvas后面再放置一个适配所有机型的大背景。 还有一个办法,因为Canvas是可以转绘的,可以先按正常尺寸绘制,然后在需要做适配的机型上,启用第二个Canvas,先绘制一个背景,再将第一个Canvas隐藏,并将其内容转绘到第二个Canvas上面去。 希望对你有帮助。
作者回复: 这里Url看起来是一个网址,实际上应该是一个Image对象。 262等,应该仅是实际需要的待绘目标数值。 原文参见:https://blog.csdn.net/zSY_snake/article/details/81188128,供参考
作者回复: 触到哪里就是哪里! 拖拽的时候相对于目标对象做好偏量计算,一般不会有什么问题啦~
作者回复: 源码是分阶段的,仓库主分支是最新源码。使用中有问题欢迎留言。