最新 Canvas 2D 接口----小程序的Canvas 实例使用说明

本文介绍了微信小程序中关于Canvas的最新变化,原来使用的CanvasContext已被新的Canvas实例取代,需通过SelectorQuery获取。详细展示了如何使用wx.createSelectorQuery()选择并操作Canvas,包括获取绘图上下文、调整尺寸、绘制方块、文字和图片的方法。同时,提供了设备像素比适配的代码示例,帮助开发者理解这一更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       之前一直用的CanvasContext,但是微信又双叒改规则了,在新版的基础库中不再支持,提供了一个Canvas实例代替。
       这个Canvas实例需要用SelectorQuery来获取,SelectorQuery又需要wx.createSelectorQuery()来获取。

官网文档这一点写的是真垃圾,一层套一层一点也不清晰(╬◣д◢)

代码+注释:

       WXML代码:

<canvas type="2d" id="myCanvas" style="width:300px;height:300px;"></canvas>

       获取创建实例:

wx.createSelectorQuery()
	.select('#myCanvas')
	.exec(res=>{
   		let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
	});
//select:在当前页面下选择第一个匹配选择器 selector 的节点。返回一个 NodesRef 对象实例,可以用于获取节点信息,用法类似css选择器
//node(function callback):获取 Node 节点实例
//exec(function callback):执行所有的请求。请求结果按请求次序构成数组,在callback的第一个参数中返回

       绘制例子

  1. 画方块
wx.createSelectorQuery()
	.select('#myCanvas')
	.fields({ node: true, size: true })
	.exec(res=>{
		let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
		let canvas = res[0].node;
		
		// 通过设备的像素比等重新绘制宽高
		const dpr = wx.getSystemInfoSync().pixelRatio
	    canvas.width = res[0].width * dpr
	    canvas.height = res[0].height * dpr
	    ctx.scale(dpr, dpr)
		
		ctx.fillStyle='#FF0000';
		ctx.fillRect(0,0,80,100);
	})

在这里插入图片描述
2. 画文字

wx.createSelectorQuery()
	.select('#myCanvas')
	.fields({ node: true, size: true })
	.exec(res=>{
		let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
		let canvas = res[0].node;
		
		// 通过设备的像素比等重新绘制宽高
		const dpr = wx.getSystemInfoSync().pixelRatio
	    canvas.width = res[0].width * dpr
	    canvas.height = res[0].height * dpr
	    ctx.scale(dpr, dpr)
		
		ctx.font="30px Arial";
		ctx.fillText("Hello World",10,50);
	})

在这里插入图片描述
3. 画图片

wx.createSelectorQuery()
	.select('#myCanvas')
	.fields({ node: true, size: true })
	.exec(res=>{
		let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
		let canvas = res[0].node;
		
		// 通过设备的像素比等重新绘制宽高
		const dpr = wx.getSystemInfoSync().pixelRatio
	    canvas.width = res[0].width * dpr
	    canvas.height = res[0].height * dpr
	    ctx.scale(dpr, dpr)
		
		let image = canvas.createImage();//创建iamge实例
		image.src = './car.png';
		image.onload = function (rrr) {
		   ctx.drawImage(image, 20, 20, 50, 50);
		}
	})

在这里插入图片描述
其他的和HTML中的canvas相似
菜鸟教程-canvas

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦夏木禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值