From f8ea1a94af72375707aad5cde9ae0ed10433dad4 Mon Sep 17 00:00:00 2001 From: zihanjian Date: Sun, 25 May 2025 12:14:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=AB=98=E4=BA=AE=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=BB=84=E4=BB=B6=E4=BB=A5=E6=94=AF=E6=8C=81=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E9=AB=98=E4=BA=AE=E6=95=88=E6=9E=9C=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=83=8F=E7=B4=A0=E5=8C=96=E7=94=BB=E5=B8=83=E7=BB=98?= =?UTF-8?q?=E5=88=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BD=93=E9=AA=8C=E5=92=8C=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.tsx | 15 ++++++ src/components/ColorPalette.tsx | 13 +++++- src/components/PixelatedPreviewCanvas.tsx | 56 +++++++++++++++++------ src/utils/imageDownloader.ts | 2 +- 4 files changed, 69 insertions(+), 17 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 27f6a56..4769281 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -141,6 +141,9 @@ export default function Home() { includeStats: true // 默认包含统计信息 }); + // 新增:高亮相关状态 + const [highlightColorKey, setHighlightColorKey] = useState(null); + const originalCanvasRef = useRef(null); const pixelatedCanvasRef = useRef(null); const fileInputRef = useRef(null); @@ -1182,6 +1185,15 @@ export default function Home() { importPaletteInputRef.current?.click(); }; + // 新增:处理颜色高亮 + const handleHighlightColor = (colorHex: string) => { + setHighlightColorKey(colorHex); + }; + + // 新增:高亮完成回调 + const handleHighlightComplete = () => { + setHighlightColorKey(null); + }; return ( <> @@ -1540,6 +1552,7 @@ export default function Home() { selectedColorSystem={selectedColorSystem} isEraseMode={isEraseMode} onEraseToggle={handleEraseToggle} + onHighlightColor={handleHighlightColor} /> @@ -1558,6 +1571,8 @@ export default function Home() { gridDimensions={gridDimensions} isManualColoringMode={isManualColoringMode} onInteraction={handleCanvasInteraction} + highlightColorKey={highlightColorKey} + onHighlightComplete={handleHighlightComplete} /> diff --git a/src/components/ColorPalette.tsx b/src/components/ColorPalette.tsx index 3ee209c..2afe4e4 100644 --- a/src/components/ColorPalette.tsx +++ b/src/components/ColorPalette.tsx @@ -19,6 +19,8 @@ interface ColorPaletteProps { // 新增:一键擦除相关props isEraseMode?: boolean; onEraseToggle?: () => void; + // 新增:高亮相关props + onHighlightColor?: (colorHex: string) => void; // 触发高亮某个颜色 } const ColorPalette: React.FC = ({ @@ -28,7 +30,8 @@ const ColorPalette: React.FC = ({ transparentKey, selectedColorSystem, isEraseMode, - onEraseToggle + onEraseToggle, + onHighlightColor }) => { if (!colors || colors.length === 0) { // Apply dark mode text color @@ -71,7 +74,13 @@ const ColorPalette: React.FC = ({ return (