fix:快捷调色板不支持荧光笔

This commit is contained in:
2025-08-23 18:29:24 +08:00
parent aba6c18a25
commit c86ce00a17
+72 -16
View File
@@ -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