diff --git a/frontend/components/screen/ScreenDesigner.tsx b/frontend/components/screen/ScreenDesigner.tsx index b132dd42..edd5c7d0 100644 --- a/frontend/components/screen/ScreenDesigner.tsx +++ b/frontend/components/screen/ScreenDesigner.tsx @@ -3246,9 +3246,10 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD const rect = canvasRef.current?.getBoundingClientRect(); if (!rect) return; + // zoom 스케일을 고려한 좌표 변환 const startPoint = { - x: event.clientX - rect.left, - y: event.clientY - rect.top, + x: (event.clientX - rect.left) / zoomLevel, + y: (event.clientY - rect.top) / zoomLevel, z: 1, }; @@ -3259,7 +3260,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD wasSelecting: false, }); }, - [dragState.isDragging], + [dragState.isDragging, zoomLevel], ); // 드래그 선택 업데이트 @@ -3268,9 +3269,10 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD if (!selectionDrag.isSelecting || !canvasRef.current) return; const rect = canvasRef.current.getBoundingClientRect(); + // zoom 스케일을 고려한 좌표 변환 const currentPoint = { - x: event.clientX - rect.left, - y: event.clientY - rect.top, + x: (event.clientX - rect.left) / zoomLevel, + y: (event.clientY - rect.top) / zoomLevel, z: 1, }; @@ -3310,7 +3312,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD selectedComponents: selectedIds, })); }, - [selectionDrag.isSelecting, selectionDrag.startPoint, layout.components], + [selectionDrag.isSelecting, selectionDrag.startPoint, layout.components, zoomLevel], ); // 드래그 선택 종료