From e66eb2fb559336aef9d400aa45845d62f90a3e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 11 Sep 2026 19:04:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E9=A2=84=E8=A7=88=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=97=B6=E8=87=AA=E5=8A=A8=E9=80=82=E9=85=8D=E7=94=BB?= =?UTF-8?q?=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在活动图片变化后重新按完整画布边界计算视口。 --- .../components/preview/PreviewWorkspace.tsx | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx index 8df4e4adf..62ce5f4d5 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx @@ -140,6 +140,31 @@ export function PreviewWorkspace({ setViewportState(next); }, []); + useEffect(() => { + if (!activeImageId || !logicalSize) return; + const element = viewportElementRef.current; + setViewport( + fitViewportToBounds({ + bounds: { + x: 0, + y: 0, + width: logicalSize.width, + height: logicalSize.height, + }, + canvasSize: { + width: element?.clientWidth || canvasSize.width, + height: element?.clientHeight || canvasSize.height, + }, + }), + ); + }, [ + activeImageId, + canvasSize.height, + canvasSize.width, + logicalSize, + setViewport, + ]); + const scaleViewportFromCenter = useCallback( (nextScale: number) => { const element = viewportElementRef.current;