fix:切换时荧光笔状态异常

This commit is contained in:
2025-08-23 18:51:16 +08:00
parent 9e63a3f49b
commit 8f01b6c5fe
+55 -16
View File
@@ -1724,13 +1724,27 @@ namespace Ink_Canvas
} }
} }
// 修复:从线擦切换到批注时,重置为默认笔模式(非高光显示) // 修复:从线擦切换到批注时,保持之前的笔类型状态
// 如果之前是荧光笔模式,则保持荧光笔状态;否则重置为默认笔模式
forceEraser = false; forceEraser = false;
forcePointEraser = false; forcePointEraser = false;
drawingShapeMode = 0; drawingShapeMode = 0;
penType = 0;
drawingAttributes.IsHighlighter = false; // 保持之前的笔类型状态,而不是强制重置
drawingAttributes.StylusTip = StylusTip.Ellipse; if (!wasHighlighter)
{
penType = 0;
drawingAttributes.IsHighlighter = false;
drawingAttributes.StylusTip = StylusTip.Ellipse;
}
// 如果之前是荧光笔模式,则保持荧光笔属性
else if (penType == 1)
{
drawingAttributes.IsHighlighter = true;
drawingAttributes.StylusTip = StylusTip.Rectangle;
drawingAttributes.Width = Settings.Canvas.HighlighterWidth / 2;
drawingAttributes.Height = Settings.Canvas.HighlighterWidth;
}
ColorSwitchCheck(); ColorSwitchCheck();
HideSubPanels("pen", true); HideSubPanels("pen", true);
@@ -1742,13 +1756,26 @@ namespace Ink_Canvas
// 修复:从线擦切换到批注时,确保正确重置状态 // 修复:从线擦切换到批注时,确保正确重置状态
if (forceEraser) if (forceEraser)
{ {
// 从橡皮擦模式切换过来,重置为默认笔模式 // 从橡皮擦模式切换过来,保持之前的笔类型状态
forceEraser = false; forceEraser = false;
forcePointEraser = false; forcePointEraser = false;
drawingShapeMode = 0; drawingShapeMode = 0;
penType = 0;
drawingAttributes.IsHighlighter = false; // 保持之前的笔类型状态,而不是强制重置
drawingAttributes.StylusTip = StylusTip.Ellipse; if (!wasHighlighter)
{
penType = 0;
drawingAttributes.IsHighlighter = false;
drawingAttributes.StylusTip = StylusTip.Ellipse;
}
// 如果之前是荧光笔模式,则保持荧光笔属性
else if (penType == 1)
{
drawingAttributes.IsHighlighter = true;
drawingAttributes.StylusTip = StylusTip.Rectangle;
drawingAttributes.Width = Settings.Canvas.HighlighterWidth / 2;
drawingAttributes.Height = Settings.Canvas.HighlighterWidth;
}
// 在非白板模式下,从线擦切换到批注时不直接弹出子面板 // 在非白板模式下,从线擦切换到批注时不直接弹出子面板
if (currentMode != 1) if (currentMode != 1)
@@ -1800,13 +1827,26 @@ namespace Ink_Canvas
} }
inkCanvas.EditingMode = InkCanvasEditingMode.Ink; inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
// 修复:从线擦切换到批注时,重置为默认笔模式(非高光显示) // 修复:从线擦切换到批注时,保持之前的笔类型状态
forceEraser = false; forceEraser = false;
forcePointEraser = false; forcePointEraser = false;
drawingShapeMode = 0; drawingShapeMode = 0;
penType = 0;
drawingAttributes.IsHighlighter = false; // 保持之前的笔类型状态,而不是强制重置
drawingAttributes.StylusTip = StylusTip.Ellipse; if (!wasHighlighter)
{
penType = 0;
drawingAttributes.IsHighlighter = false;
drawingAttributes.StylusTip = StylusTip.Ellipse;
}
// 如果之前是荧光笔模式,则保持荧光笔属性
else if (penType == 1)
{
drawingAttributes.IsHighlighter = true;
drawingAttributes.StylusTip = StylusTip.Rectangle;
drawingAttributes.Width = Settings.Canvas.HighlighterWidth / 2;
drawingAttributes.Height = Settings.Canvas.HighlighterWidth;
}
ColorSwitchCheck(); ColorSwitchCheck();
HideSubPanels("pen", true); HideSubPanels("pen", true);
@@ -1918,10 +1958,9 @@ namespace Ink_Canvas
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke; inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
drawingShapeMode = 0; drawingShapeMode = 0;
// 修复:切换到线擦时,确保重置笔的状态 // 修复:切换到线擦时,保存当前的笔类型状态,而不是强制重置
penType = 0; // 这样从线擦切换回批注时,可以恢复之前的荧光笔状态
drawingAttributes.IsHighlighter = false; // penType 和 drawingAttributes 的状态将在 PenIcon_Click 中根据 wasHighlighter 来恢复
drawingAttributes.StylusTip = StylusTip.Ellipse;
inkCanvas_EditingModeChanged(inkCanvas, null); inkCanvas_EditingModeChanged(inkCanvas, null);
CancelSingleFingerDragMode(); CancelSingleFingerDragMode();