uni-app 微信小程序 canvas 组件 type='2d'不能正常显示,不使用type='2d'属性,正常,模拟器真机环境问题相同,type='2d' 也以拿到context 信息,但不能正常工作,无任何错误信息,就是不显示,是否有人遇到此问题,如何解决,烦请告知谢谢。 另,页面代码均使用uni-app 方式,未采用微信社区示例代码
`const drawImage=()=>{
//context 在组件加载完成事件获取
//ctx = uni.createCanvasContext('xCanvas',instant)
nextTick(()=>{
if(!openflag){
setTimeout(()=>{},200)
}
uni.getImageInfo({
src:billsrc.value,
success: (res)=>{
ctx.drawImage(res.path,0,0,width,300)
ctx.draw()
drawRect(res.width,res.height,width)
//console.log("res",ctx)
},
fail: (err) => {
console.log("feeinvoice_drawImage_error",err)
}
})
})
}
`
4 个回复
海洋_2023 (作者)
已解决,未采用微信新版代码,变通处理,不使用type='2d'标签,画图完成后导出图片,用image标签显示,解决canvas层级问题,不过官方应认真修改API,不应要求用户去自行处理,否则就失去了产品价值
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
感谢反馈,微信新版和旧版 canvas 带来的影响,目前首先在文档中进行补充和提示,后续横向对比各家 canvas 组件后给出最终结论。
w***@163.com
一样。现在加上type='2d'标签还是不会显示
1***@qq.com
仍旧
DCloud_UNI_JBB
你是什么问题?
2025-12-09 17:03
1***@qq.com
回复 DCloud_UNI_JBB: 不传type小程序正常,传了type=2d draw没反应
2025-12-10 10:14
DCloud_UNI_JBB
回复 1***@qq.com: 用微信的新版API了吗?
2025-12-10 10:36
1***@qq.com
回复 DCloud_UNI_JBB: 用的都是uniapp的的api,context是通过 createCanvasContext 获取的
2025-12-10 14:20
DCloud_UNI_JBB
回复 1***@qq.com: uni是用的微信的API,同样的写法你可以试试微信小程序能不能行
2025-12-10 14:24
1***@qq.com
回复 DCloud_UNI_JBB: 微信是通过 this 去获取canvas 实例然后getcontext的,直接就卡在获取canvas实例上了
2025-12-11 16:51
1***@qq.com
回复 DCloud_UNI_JBB: 最终这样写,可以正常渲染,希望快点解决这个问题
<canvas type="2d" canvas-id="myCanvas" id="myCanvas" />
uni.createSelectorQuery().in(instance)
.select('#myCanvas')
.fields({
id: true, node: true, rect: true, context: true
}, res => {
if (!res) return
// @ts-ignore
const canvas = Array.isArray(res) ? res[0].node : res.node
if (!canvas) return
const ctx = canvas.getContext('2d') as CanvasRenderingContext2D
2025-12-12 10:09
DCloud_UNI_JBB
回复 1***@qq.com: 同样的写法原生微信小程序有没有这个问题?
2025-12-12 10:40
DCloud_UNI_JBB
回复 1***@qq.com: 描述清楚要解决的问题是什么?你提供的信息太少
2025-12-12 10:43
1***@qq.com
回复 DCloud_UNI_JBB: 没用微信原生试过,问题就是 :组件内canvas type=2d , 使用uni.createCanvasContext(canvasID,instance) 获取的context 无法绘图
2025-12-12 11:57
DCloud_UNI_JBB
回复 1***@qq.com: 你写的这个就是调用的微信原生API,所以才让你试试原生微信小程序行不行
2025-12-12 11:58