diff --git a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs index b5b4c02e..b7ae1687 100644 --- a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs @@ -700,6 +700,9 @@ namespace Ink_Canvas { // AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardDeleteIcon); //} //else { + // 禁用高级橡皮擦系统 + DisableAdvancedEraserSystem(); + forceEraser = true; forcePointEraser = false; @@ -707,6 +710,11 @@ namespace Ink_Canvas { inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke; drawingShapeMode = 0; + // 修复:切换到线擦时,确保重置笔的状态 + penType = 0; + drawingAttributes.IsHighlighter = false; + drawingAttributes.StylusTip = StylusTip.Ellipse; + inkCanvas_EditingModeChanged(inkCanvas, null); CancelSingleFingerDragMode(); diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 0315cdc1..3f58c4f9 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -1378,6 +1378,10 @@ namespace Ink_Canvas { FloatingbarSelectionBG.Visibility = Visibility.Visible; System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 28); + // 记录当前是否已经是批注模式且是否为高光显示模式 + bool wasInInkMode = inkCanvas.EditingMode == InkCanvasEditingMode.Ink; + bool wasHighlighter = drawingAttributes.IsHighlighter; + if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed) { inkCanvas.EditingMode = InkCanvasEditingMode.Ink; @@ -1411,11 +1415,37 @@ namespace Ink_Canvas { //AnimationsHelper.ShowWithSlideFromLeftAndFade(StackPanelCanvasControls); CheckEnableTwoFingerGestureBtnVisibility(true); inkCanvas.EditingMode = InkCanvasEditingMode.Ink; + + // 修复:从线擦切换到批注时,重置为默认笔模式(非高光显示) + forceEraser = false; + forcePointEraser = false; + drawingShapeMode = 0; + penType = 0; + drawingAttributes.IsHighlighter = false; + drawingAttributes.StylusTip = StylusTip.Ellipse; + ColorSwitchCheck(); HideSubPanels("pen", true); } else { - if (inkCanvas.EditingMode == InkCanvasEditingMode.Ink) { + if (wasInInkMode) { + // 修复:从线擦切换到批注时,确保正确重置状态 + if (forceEraser) { + // 从橡皮擦模式切换过来,重置为默认笔模式 + forceEraser = false; + forcePointEraser = false; + drawingShapeMode = 0; + penType = 0; + drawingAttributes.IsHighlighter = false; + drawingAttributes.StylusTip = StylusTip.Ellipse; + + // 在非白板模式下,从线擦切换到批注时不直接弹出子面板 + if (currentMode != 1) { + HideSubPanels("pen", true); + return; + } + } + if (PenPalette.Visibility == Visibility.Visible) { AnimationsHelper.HideWithSlideAndFade(EraserSizePanel); AnimationsHelper.HideWithSlideAndFade(BorderTools); @@ -1451,6 +1481,15 @@ namespace Ink_Canvas { SaveStrokes(); } inkCanvas.EditingMode = InkCanvasEditingMode.Ink; + + // 修复:从线擦切换到批注时,重置为默认笔模式(非高光显示) + forceEraser = false; + forcePointEraser = false; + drawingShapeMode = 0; + penType = 0; + drawingAttributes.IsHighlighter = false; + drawingAttributes.StylusTip = StylusTip.Ellipse; + ColorSwitchCheck(); HideSubPanels("pen", true); } @@ -1541,6 +1580,9 @@ namespace Ink_Canvas { FloatingbarSelectionBG.Visibility = Visibility.Visible; System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 112); + // 禁用高级橡皮擦系统 + DisableAdvancedEraserSystem(); + forceEraser = true; forcePointEraser = false; @@ -1548,6 +1590,11 @@ namespace Ink_Canvas { inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke; drawingShapeMode = 0; + // 修复:切换到线擦时,确保重置笔的状态 + penType = 0; + drawingAttributes.IsHighlighter = false; + drawingAttributes.StylusTip = StylusTip.Ellipse; + inkCanvas_EditingModeChanged(inkCanvas, null); CancelSingleFingerDragMode();