因為高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;
}