发现前两年用的小程序的canvas api,目前在小程序中都发生了很大的更新,导致都无法直接使用了。 故写下这个笔记记录
type 类型 为
2d
或者webgl
id 必须提供
<canvas type="2d" id="myCanvas"></canvas>
Page({
onLoad() {
// 1 获取界面上的节点信息 返回一个 SelectorQuery 对象实例
const query = wx.createSelectorQuery();
query
// 2 在当前页面下选择第一个匹配选择器 selector 的节点。返回一个 NodesRef 对象实例,可以用于获取节点信息
.select('#myCanvas')
// 3 获取节点的相关信息。需要获取的字段在 fields 中指定。返回值是 nodesRef 对应的 selectorQuery
.fields({ node: true, size: true })
// 4 执行所有的请求。请求结果按请求次序构成数组
.exec((res) => {
// 5 获取画布节点
const canvas = res[0].node;
// 6 获取画布对象
const ctx = canvas.getContext('2d');
// 7 定起点
ctx.moveTo(0, 0);
// 8 终点
ctx.lineTo(100, 100);
// 9 描边
ctx.stroke();
});
},
});
Page({
onLoad() {
// 1 获取界面上的节点信息 返回一个 SelectorQuery 对象实例
const query = wx.createSelectorQuery();
query
// 2 在当前页面下选择第一个匹配选择器 selector 的节点。返回一个 NodesRef 对象实例,可以用于获取节点信息
.select('#myCanvas')
// 3 获取节点的相关信息。需要获取的字段在 fields 中指定。返回值是 nodesRef 对应的 selectorQuery
.fields({ node: true, size: true })
// 4 执行所有的请求。请求结果按请求次序构成数组
.exec((res) => {
// ==========================
// 1 获取画布节点
const canvas = res[0].node;
// 2 获取画布对象
const ctx = canvas.getContext('2d');
// 3 创建图片
const image = canvas.createImage();
// 4 监听图片下载
image.onload = function () {
// 5 开始描绘图片
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
};
// 6 绘图
image.src = '../../images/1.jpg';
// ==========================
});
},
});