比较矛盾的点是: css 中的值单位是 rpx, 但是在 canvas 中单位又是 px,虽然值一样但是 单位不一样,结果显示出来的效果又是一致的,这个太容易产生误差了
如何正确使用 Canvas 2D ctx.scale(dpr, dpr)?在 canvas 2D 使用 ctx.scale(dpr, dpr) 缩放后 后续设置的应该使用 css 的值还是应该使用转换成 px 的值? 以下代码是伪代码,具体可运行代码可以看 代码片段,但是实际真机运行效果使用 css 的值效果最接近。使用转换成 px 的值实际效果偏差较大。 const imgWidth = 720 const imgHeight = 1212 const canvasWidth = imgWidth // canvas style 动态设置 width: {{canvasWidth }}px const canvasHeight = imgHeight // canvas style 动态设置 height: {{canvasHeight }}px const ctx = canvas.getContext('2d'); const windowInfo = wx.getWindowInfo() const dpr = windowInfo.pixelRatio; canvas.width = width * dpr canvas.height = height * dpr ctx.scale(dpr, dpr) const image = canvas.createImage(); image.onload = () => { ctx.drawImage(image, 0, 0, width, height); // 在 css 中设置 font-size=42rpx 那么这里应该写多少 px? const fontSize = '' // 当这里的值是 42px 时实际效果偏差不多,转换为px 的值是 21px,使用 21px 实际差距较大 ctx.font = `bold ${fontSize}px normal`; } image.src = 'xxx.jpg'
08-21我现在也是遇到这样的问题了,兄弟们有没有什么好的处理方式呀
【bug】android下onShow不会重置referrerInfo属性你想反馈一个 Bug 还是 提一个需求? 如果是 Bug: * Bug 表现是什么?预期表现是什么? 小程序之间跳转时,是通过onShow,onLaunch中的 extraData 字段传参数的。 问题是 在Android手机,每次触发 onShow (比如切换应用前后台),参数中都会保留 extraData字段。 而IOS手机上,则会重置 extraData字段。 考虑到 wx.navigateBackMiniProgram 接口,只能从onShow 函数中获取参数,导致目前我需要对andorid做特殊处理。 * 如何复现? 如果在android下 从小程序A,跳转到小程序B,使用 wx.navigateBackMiniProgram 跳转回小程序A,观察onShow参数: [图片] 手机切换到首页,再切换回小程序,观察onShow参数,发现referrInfo对象依然存在 [图片] 如果在IOS下 从小程序A,跳转到小程序B,使用 wx.navigateBackMiniProgram 跳转回小程序A,观察onShow参数: [图片] 手机切换到首页,再切换回小程序,观察onShow参数,referrInfo对象被重置了 [图片] * 提供一个最简复现 Demo 1. 涉及到小程序之间跳转,不好出demo 如果是需求: * 你希望有什么能力? * 你需要这个能力的场景是 ?
2024-09-12