diff --git a/components/agents/AgentPsdTemplateEditorDialog.tsx b/components/agents/AgentPsdTemplateEditorDialog.tsx index 9b66d50d9..c658240a6 100644 --- a/components/agents/AgentPsdTemplateEditorDialog.tsx +++ b/components/agents/AgentPsdTemplateEditorDialog.tsx @@ -472,18 +472,23 @@ export function AgentPsdTemplateEditorDialog({ setTextAssignments(initialState.textAssignments); setSelectedLayerId(getPreferredSelectedLayerId(selectedTemplate)); - // 自动适配缩放比例 - if (selectedTemplate && previewViewportRef.current) { - const viewport = previewViewportRef.current; - const padding = 32; // 预留边距 - const availableWidth = viewport.clientWidth - padding; - const availableHeight = viewport.clientHeight - padding; + // 自动适配缩放比例(延迟执行确保 DOM 已渲染) + if (selectedTemplate) { + setTimeout(() => { + if (previewViewportRef.current) { + const viewport = previewViewportRef.current; + const padding = 32; + const availableWidth = viewport.clientWidth - padding; + const availableHeight = viewport.clientHeight - padding; - const scaleX = availableWidth / selectedTemplate.width; - const scaleY = availableHeight / selectedTemplate.height; - const fitScale = Math.min(scaleX, scaleY, 1); // 不超过1倍 - - setStageScale(fitScale); + if (availableWidth > 0 && availableHeight > 0) { + const scaleX = availableWidth / selectedTemplate.width; + const scaleY = availableHeight / selectedTemplate.height; + const fitScale = Math.min(scaleX, scaleY, 1); + setStageScale(fitScale); + } + } + }, 100); } }, [open, selectedTemplate, sourceImageUrl]);