微信小程序绘制canvas时在不同 设备上的大小不同的问题

简介: 微信小程序绘制canvas时在不同 设备上的大小不同的问题

不同的机型上显示相同大小的 Canvas,需要考虑到设备像素比(device pixel ratio)的影响。在高清屏幕上,为了保持图像的清晰度,一个 CSS 像素可能对应多个物理像素,而不同的设备像素比会导致不同的物理像素数量。

因此,我们需要根据当前设备的像素比来动态设置 Canvas 的大小。具体来说,可以使用 wx.getSystemInfoSync() 方法获取当前设备的信息,然后根据设备像素比乘以实际大小来计算 Canvas 的宽高。

下面是一个示例代码

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 的实际大小和绘制区域大小
  const width = res[0].width * dpr;
  const height = res[0].height * dpr;
  canvas.width = width;
  canvas.height = height;
  ctx.scale(dpr, dpr);
  // 在这里开始绘制你的图形
  // ...
});

在这个示例中,我们首先使用 wx.createSelectorQuery() 获取 Canvas 节点的信息,然后根据节点的实际大小和设备像素比计算出 Canvas 的实际大小,并将它赋值给 canvas.width 和 canvas.height。接下来,我们还需要通过 ctx.scale() 方法将绘制区域缩放到设备像素比的尺寸。

如果切换页面后绘制canvas图片大小还是会变,可以在绘制图片宽高上乘以设备的像素比,这样不同设备乘以不同的像素比,在页面中绘制图片大小就会相同了。


目录
相关文章
|
7月前
|
前端开发 小程序 JavaScript
微信小程序canvas手写签字
微信小程序canvas手写签字
97 0
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的小型医院医疗设备管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的小型医院医疗设备管理系统附带文章源码部署视频讲解等
65 6
|
2月前
|
前端开发 小程序 JavaScript
小程序 canvas 生成海报 一次搞掂
小程序 canvas 生成海报 一次搞掂
33 1
|
2月前
|
前端开发 小程序 JavaScript
微信小程序 canvas 备忘
微信小程序 canvas 备忘
40 0
|
5月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
423 0
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的实验室设备管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的实验室设备管理系统附带文章和源代码部署视频讲解等
57 9
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的农业设备租赁系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的农业设备租赁系统附带文章源码部署视频讲解等
52 0
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的工厂生产设备维护管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的工厂生产设备维护管理系统附带文章和源代码部署视频讲解等
40 0
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的学生宿舍设备报修管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的学生宿舍设备报修管理系统附带文章和源代码部署视频讲解等
51 0
|
7月前
|
JavaScript Java 测试技术
基于小程序的设备故障报修管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的设备故障报修管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
49 0