修复 多次生成画面预览和历史记录不更新的问题;

This commit is contained in:
2025-09-14 03:30:45 +08:00
parent 6aa250d06e
commit fd35325c52

View File

@@ -41,29 +41,27 @@ export const ImageCanvas: React.FC = () => {
img.onload = () => { img.onload = () => {
setImage(img); setImage(img);
// 仅在这是新图像时自动适应(没有现有的缩放/平移状态 // 每次有新图像时自动适应画布,而不仅仅是在初始状态
if (canvasZoom === 1 && canvasPan.x === 0 && canvasPan.y === 0) { // 通过比较图像数据来判断是否是新图像
// 自动适应图像到画布 const isMobile = window.innerWidth < 768;
const isMobile = window.innerWidth < 768; const padding = isMobile ? 0.9 : 0.8; // 在移动设备上使用更多屏幕空间
const padding = isMobile ? 0.9 : 0.8; // 在移动设备上使用更多屏幕空间
const scaleX = (stageSize.width * padding) / img.width;
const scaleX = (stageSize.width * padding) / img.width; const scaleY = (stageSize.height * padding) / img.height;
const scaleY = (stageSize.height * padding) / img.height;
const maxZoom = isMobile ? 0.3 : 0.8;
const maxZoom = isMobile ? 0.3 : 0.8; const optimalZoom = Math.min(scaleX, scaleY, maxZoom);
const optimalZoom = Math.min(scaleX, scaleY, maxZoom);
setCanvasZoom(optimalZoom);
setCanvasZoom(optimalZoom);
// 居中图像
// 居中图像 setCanvasPan({ x: 0, y: 0 });
setCanvasPan({ x: 0, y: 0 });
}
}; };
img.src = canvasImage; img.src = canvasImage;
} else { } else {
setImage(null); setImage(null);
} }
}, [canvasImage, stageSize, setCanvasZoom, setCanvasPan, canvasZoom, canvasPan]); }, [canvasImage, stageSize, setCanvasZoom, setCanvasPan]);
// 处理舞台大小调整 // 处理舞台大小调整
useEffect(() => { useEffect(() => {