canvas组件下,有一段示例代码,如下:
<!-- canvas.wxml -->
<canvas type="2d" id="myCanvas"></canvas>
// canvas.js
Page({
onReady() {
const query = wx.createSelectorQuery()
query.select('#myCanvas')
.fields({ node: true, size: true })
.exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
const dpr = wx.getSystemInfoSync().pixelRatio
canvas.width = res[0].width * dpr
canvas.height = res[0].height * dpr
ctx.scale(dpr, dpr)
ctx.fillRect(0, 0, 100, 100)
})
}
})
不太理解长宽为什么要乘以dpr,并且画布缩放同样的倍数。我把这些去掉后预览看起来和上面一样:
canvas.width = res[0].width
canvas.height = res[0].height
// ctx.scale(dpr, dpr)
因为小程序里的canvas设置尺寸只能用style设置宽高 但是这种方法设置canvas会导致画布和画板尺寸不一样 显示会变形 所以要用canvas.width这种方式设置成和style里的尺寸一样 又因为 设备像素比=物理像素 除以 独立像素(css) 所以设置的物理像素就是:物理像素=设备像素比 * 独立像素(css)
我也不太理解,之后我图片和文字加上的时候就变形了
同问 你用drawImage试试 加不加完全是两种效果
不可能一样,显示会变形