因为高dpi会把原本低dpi的图片或者canvas拉伸导致模糊,所以在定义的时候我们让画布和画布的内容(因为canvas和内容是两个东西)都放大,这样保证高清,个人理解,如有更好的想法可及时更改
1.画布尺寸调整:首先,我们需要根据设备的DPI或像素比调整Canvas的物理尺寸。这意味着如果设备的DPI较高,我们会按比例增加Canvas的实际像素尺寸,而不改变其逻辑尺寸。这样,Canvas就能匹配更多物理像素来呈现内容,避免拉伸。
2.内容缩放:单纯增大Canvas尺寸会导致绘图内容按默认大小绘制时显得过小。因此,我们会在Canvas的绘图上下文中设置一个缩放因子(通常是DPR),使得所有绘制操作(如图像、形状、文本等)在绘制前都按此因子缩放。这样,内容会被放大到适合高DPI屏幕的大小,同时保持其原始的清晰度和比例,不会显得模糊。
通过这两个步骤,即使是在高分辨率的屏幕上,用户也能看到清晰、适配良好的图像和图形内容。这确保了视觉体验的一致性和高质量,无论用户的设备是标准DPI还是高DPI。
createHiDPICanvas(width, height) {
let dpr = uni.getSystemInfoSync().devicePixelRatio;
let canvas = uni.createCanvas();
canvas.width = width * dpr;
canvas.height = height * dpr;
canvas.getContext('2d').scale(dpr, dpr);
return canvas;
}