From f517a63cda9898b8d06987d513b5a13141ca3256 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Mon, 21 Jul 2025 18:37:25 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E6=89=8B=E6=8E=8C=E6=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_TouchEvents.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index 6ed5d291..fc352e5e 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -9,6 +9,7 @@ using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using Point = System.Windows.Point; +using System.Diagnostics; namespace Ink_Canvas { public partial class MainWindow : Window { @@ -72,7 +73,8 @@ namespace Ink_Canvas { if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen) eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier; - if ((Settings.Advanced.TouchMultiplier != 0 || !Settings.Advanced.IsSpecialScreen) //启用特殊屏幕且触摸倍数为 0 时禁用橡皮 + // 修复:只有多指且面积大时才允许手掌擦,单指始终为批注 + if (dec != null && dec.Count >= 2 && (Settings.Advanced.TouchMultiplier != 0 || !Settings.Advanced.IsSpecialScreen) && boundWidth > BoundsWidth * 2.5) { if (drawingShapeMode == 0 && forceEraser) return; currentPalmEraserShape = GetPalmRectangleEraserShape(eraserMultiplier); @@ -82,14 +84,16 @@ namespace Ink_Canvas { if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) { inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint; } + Trace.WriteLine($"[PalmEraser] 触发手掌擦: TouchId={e.TouchDevice.Id}, boundWidth={boundWidth:F2}, eraserMultiplier={eraserMultiplier:F2}, EraserShape={currentPalmEraserShape?.GetType().Name}, TouchCount={dec.Count}"); } else { TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None; // 修复面积擦时不显示橡皮形状:无论 forcePointEraser 状态,均显示 50x50 橡皮 inkCanvas.EraserShape = new EllipseStylusShape(50, 50); if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) { - inkCanvas.EditingMode = InkCanvasEditingMode.None; + inkCanvas.EditingMode = InkCanvasEditingMode.Ink; } + Trace.WriteLine($"[PalmEraser] 非手掌擦: TouchId={e.TouchDevice.Id}, boundWidth={boundWidth:F2}, eraserMultiplier={eraserMultiplier:F2}, TouchCount={(dec != null ? dec.Count : 0)}"); } }