From c86ce00a1744d821670c8c0c2199f83b78bdab4c Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 23 Aug 2025 18:29:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=BF=AB=E6=8D=B7=E8=B0=83=E8=89=B2?= =?UTF-8?q?=E6=9D=BF=E4=B8=8D=E6=94=AF=E6=8C=81=E8=8D=A7=E5=85=89=E7=AC=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainWindow_cs/MW_FloatingBarIcons.cs | 88 +++++++++++++++---- 1 file changed, 72 insertions(+), 16 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index bc433b70..a6799df9 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -1993,6 +1993,59 @@ namespace Ink_Canvas drawingAttributes.Color = color; inkCanvas.DefaultDrawingAttributes.Color = color; + // 如果当前是荧光笔模式,同时更新荧光笔颜色和属性 + if (penType == 1) + { + // 根据颜色设置对应的荧光笔颜色索引 + if (color == Colors.White || IsColorSimilar(color, Color.FromRgb(250, 250, 250), 10)) + { + highlighterColor = 101; // 白色荧光笔 + } + else if (color == Colors.Black) + { + highlighterColor = 100; // 黑色荧光笔 + } + else if (color == Colors.Yellow || IsColorSimilar(color, Color.FromRgb(234, 179, 8), 15) || + IsColorSimilar(color, Color.FromRgb(250, 204, 21), 15) || + IsColorSimilar(color, Color.FromRgb(253, 224, 71), 15)) + { + highlighterColor = 103; // 黄色荧光笔 + } + else if (color == Color.FromRgb(255, 165, 0) || IsColorSimilar(color, Color.FromRgb(249, 115, 22), 15) || + IsColorSimilar(color, Color.FromRgb(234, 88, 12), 15)) + { + highlighterColor = 109; // 橙色荧光笔 + } + else if (color == Color.FromRgb(37, 99, 235)) + { + highlighterColor = 106; // 蓝色荧光笔 + } + else if (color == Colors.Red || IsColorSimilar(color, Color.FromRgb(220, 38, 38), 15) || + IsColorSimilar(color, Color.FromRgb(239, 68, 68), 15)) + { + highlighterColor = 102; // 红色荧光笔 + } + else if (color == Colors.Green || IsColorSimilar(color, Color.FromRgb(22, 163, 74), 15)) + { + highlighterColor = 104; // 绿色荧光笔 + } + else if (color == Color.FromRgb(147, 51, 234)) + { + highlighterColor = 107; // 紫色荧光笔 + } + + // 确保荧光笔属性正确设置 + drawingAttributes.Width = Settings.Canvas.HighlighterWidth / 2; + drawingAttributes.Height = Settings.Canvas.HighlighterWidth; + drawingAttributes.StylusTip = StylusTip.Rectangle; + drawingAttributes.IsHighlighter = true; + + inkCanvas.DefaultDrawingAttributes.Width = Settings.Canvas.HighlighterWidth / 2; + inkCanvas.DefaultDrawingAttributes.Height = Settings.Canvas.HighlighterWidth; + inkCanvas.DefaultDrawingAttributes.StylusTip = StylusTip.Rectangle; + inkCanvas.DefaultDrawingAttributes.IsHighlighter = true; + } + // 更新颜色状态 if (currentMode == 0) { @@ -2047,50 +2100,53 @@ namespace Ink_Canvas QuickColorGreenCheckSingle.Visibility = Visibility.Collapsed; // 显示当前选中颜色的check图标 - if (IsColorSimilar(selectedColor, Colors.White, 10) || IsColorSimilar(selectedColor, Color.FromRgb(250, 250, 250), 10)) + // 在荧光笔模式下,使用更宽松的颜色匹配 + int tolerance = (penType == 1) ? 25 : 15; // 荧光笔模式使用更大的容差 + + if (IsColorSimilar(selectedColor, Colors.White, tolerance) || IsColorSimilar(selectedColor, Color.FromRgb(250, 250, 250), tolerance)) { QuickColorWhiteCheck.Visibility = Visibility.Visible; QuickColorWhiteCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Colors.Black, 10)) + else if (IsColorSimilar(selectedColor, Colors.Black, tolerance)) { QuickColorBlackCheck.Visibility = Visibility.Visible; QuickColorBlackCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Colors.Yellow, 15) || - IsColorSimilar(selectedColor, Color.FromRgb(234, 179, 8), 15) || - IsColorSimilar(selectedColor, Color.FromRgb(250, 204, 21), 15) || - IsColorSimilar(selectedColor, Color.FromRgb(253, 224, 71), 15)) + else if (IsColorSimilar(selectedColor, Colors.Yellow, tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(234, 179, 8), tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(250, 204, 21), tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(253, 224, 71), tolerance)) { QuickColorYellowCheck.Visibility = Visibility.Visible; QuickColorYellowCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Color.FromRgb(255, 165, 0), 15) || - IsColorSimilar(selectedColor, Color.FromRgb(249, 115, 22), 15) || - IsColorSimilar(selectedColor, Color.FromRgb(234, 88, 12), 15)) + else if (IsColorSimilar(selectedColor, Color.FromRgb(255, 165, 0), tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(249, 115, 22), tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(234, 88, 12), tolerance)) { QuickColorOrangeCheck.Visibility = Visibility.Visible; QuickColorOrangeCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Color.FromRgb(37, 99, 235), 15)) + else if (IsColorSimilar(selectedColor, Color.FromRgb(37, 99, 235), tolerance)) { QuickColorBlueCheck.Visibility = Visibility.Visible; // 单行显示模式没有蓝色,所以不设置单行的check } - else if (IsColorSimilar(selectedColor, Colors.Red, 15) || - IsColorSimilar(selectedColor, Color.FromRgb(220, 38, 38), 15) || - IsColorSimilar(selectedColor, Color.FromRgb(239, 68, 68), 15)) + else if (IsColorSimilar(selectedColor, Colors.Red, tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(220, 38, 38), tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(239, 68, 68), tolerance)) { QuickColorRedCheck.Visibility = Visibility.Visible; QuickColorRedCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Colors.Green, 15) || - IsColorSimilar(selectedColor, Color.FromRgb(22, 163, 74), 15)) + else if (IsColorSimilar(selectedColor, Colors.Green, tolerance) || + IsColorSimilar(selectedColor, Color.FromRgb(22, 163, 74), tolerance)) { QuickColorGreenCheck.Visibility = Visibility.Visible; QuickColorGreenCheckSingle.Visibility = Visibility.Visible; } - else if (IsColorSimilar(selectedColor, Color.FromRgb(147, 51, 234), 15)) + else if (IsColorSimilar(selectedColor, Color.FromRgb(147, 51, 234), tolerance)) { QuickColorPurpleCheck.Visibility = Visibility.Visible; // 单行显示模式没有紫色,所以不设置单行的check