From 2311419e715717ed94868da1e154d89018b1b2a4 Mon Sep 17 00:00:00 2001 From: yhh <359807859@qq.com> Date: Wed, 3 Dec 2025 17:29:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(tilemap-editor):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=94=BB=E5=B8=83=E9=AB=98DPI=E5=B1=8F=E5=B9=95=E5=88=86?= =?UTF-8?q?=E8=BE=A8=E7=8E=87=E9=80=82=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/TilemapCanvas.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/tilemap-editor/src/components/TilemapCanvas.tsx b/packages/tilemap-editor/src/components/TilemapCanvas.tsx index 28cea044..112770d1 100644 --- a/packages/tilemap-editor/src/components/TilemapCanvas.tsx +++ b/packages/tilemap-editor/src/components/TilemapCanvas.tsx @@ -81,11 +81,14 @@ export const TilemapCanvas: React.FC = ({ const ctx = canvas.getContext('2d'); if (!ctx) return; + const dpr = window.devicePixelRatio || 1; + // Clear ctx.fillStyle = '#2d2d2d'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.save(); + ctx.scale(dpr, dpr); ctx.translate(panX, panY); ctx.scale(zoom, zoom); @@ -214,11 +217,16 @@ export const TilemapCanvas: React.FC = ({ cancelAnimationFrame(rafId); } rafId = requestAnimationFrame(() => { + const dpr = window.devicePixelRatio || 1; const newWidth = container.clientWidth; const newHeight = container.clientHeight; - if (canvas.width !== newWidth || canvas.height !== newHeight) { - canvas.width = newWidth; - canvas.height = newHeight; + const scaledWidth = Math.floor(newWidth * dpr); + const scaledHeight = Math.floor(newHeight * dpr); + if (canvas.width !== scaledWidth || canvas.height !== scaledHeight) { + canvas.width = scaledWidth; + canvas.height = scaledHeight; + canvas.style.width = `${newWidth}px`; + canvas.style.height = `${newHeight}px`; draw(); } rafId = null;