diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 060994ab..289e9039 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -1866,13 +1866,9 @@ namespace Ink_Canvas if (sender == Cursor_Icon && lastBorderMouseDownObject != Cursor_Icon) return; // 禁用高级橡皮擦系统 - DisableEraserOverlay(); - - // 使用集中化的工具模式切换方法,确保快捷键状态正确更新 - // 鼠标模式下应该禁用快捷键以放行键盘操作 + DisableEraserOverlay(); SetCurrentToolMode(InkCanvasEditingMode.None); - // 更新模式缓存,确保后续的模式检测正确 UpdateCurrentToolMode("cursor"); SetFloatingBarHighlightPosition("cursor"); @@ -2312,7 +2308,7 @@ namespace Ink_Canvas if (sender == EraserByStrokes_Icon && lastBorderMouseDownObject != EraserByStrokes_Icon) return; // 禁用高级橡皮擦系统 - DisableEraserOverlay(); + DisableEraserOverlay(); forceEraser = true; forcePointEraser = false; diff --git a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs index 752cbeff..85fe0501 100644 --- a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs +++ b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs @@ -491,25 +491,15 @@ namespace Ink_Canvas if (drawingShapeMode != 0) { - // 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集 inkCanvas.EditingMode = InkCanvasEditingMode.None; if (!isTouchDown) return; if (isWaitUntilNextTouchDown && dec.Count > 1) return; - if (dec.Count > 1) + + // 对于多笔图形绘制,允许第二笔绘制,即使dec.Count > 1 + if (dec.Count > 1 && !((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1)) { - if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1) - { - // 第二笔绘制双曲线时,只删除第二笔的临时笔画,保留第一笔的辅助线 - try - { - inkCanvas.Strokes.Remove(lastTempStroke); - } - catch { } - return; - } - // 其他情况正常删除临时笔画 try { @@ -522,6 +512,17 @@ namespace Ink_Canvas } return; } + + // 第二笔绘制双曲线时,只删除第二笔的临时笔画,保留第一笔的辅助线 + if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1) + { + try + { + inkCanvas.Strokes.Remove(lastTempStroke); + } + catch { } + // 不直接返回,继续执行绘制逻辑 + } Point touchPoint = e.GetTouchPoint(inkCanvas).Position; if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1) diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index e5af3efe..bd5b753d 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -245,7 +245,6 @@ namespace Ink_Canvas if (drawingShapeMode != 0) { - // 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集 inkCanvas.EditingMode = InkCanvasEditingMode.None; isTouchDown = true; @@ -538,7 +537,6 @@ namespace Ink_Canvas } if (drawingShapeMode != 0) { - // 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集 inkCanvas.EditingMode = InkCanvasEditingMode.None; // 设置触摸状态,类似鼠标事件处理 @@ -601,13 +599,13 @@ namespace Ink_Canvas } if (drawingShapeMode != 0) { - // 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹收集 inkCanvas.EditingMode = InkCanvasEditingMode.None; - // 几何绘制模式下不记录触摸点,避免触摸轨迹被收集 SetCursorBasedOnEditingMode(inkCanvas); inkCanvas.CaptureTouch(e.TouchDevice); ViewboxFloatingBar.IsHitTestVisible = false; BlackboardUIGridForInkReplay.IsHitTestVisible = false; + + isTouchDown = true; if (dec.Count == 0) {