From c2ca1c97027acd1c9a6dbe220518864a9b687471 Mon Sep 17 00:00:00 2001 From: doudou0720 <98651603+doudou0720@users.noreply.github.com> Date: Wed, 18 Feb 2026 22:37:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(Selection/Touch):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=A7=A6=E6=91=B8=E6=8B=96=E5=8A=A8=E9=80=89=E6=8B=A9=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E5=9D=90=E6=A0=87=E8=AE=A1=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com> --- Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs b/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs index f21b0fd9..ec1354d4 100644 --- a/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs +++ b/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs @@ -552,6 +552,9 @@ namespace Ink_Canvas var touchPoint = e.GetTouchPoint(null); centerPoint = touchPoint.Position; lastTouchPointOnGridInkCanvasCover = touchPoint.Position; + + var touchPointInCanvas = e.GetTouchPoint(inkCanvas); + lastDragPointInCanvas = touchPointInCanvas.Position; } } @@ -561,6 +564,8 @@ namespace Ink_Canvas if (dec.Count >= 1) return; isProgramChangeStrokeSelection = false; + lastDragPointInCanvas = new Point(0, 0); + var touchUpPoint = e.GetTouchPoint(null).Position; if (lastTouchPointOnGridInkCanvasCover == touchUpPoint) { @@ -600,9 +605,9 @@ namespace Ink_Canvas var currentTouchPoint = e.GetTouchPoint(inkCanvas).Position; // 检查是否有有效的起始触摸点 - if (lastTouchPointOnGridInkCanvasCover != new Point(0, 0)) + if (lastDragPointInCanvas != new Point(0, 0)) { - var delta = currentTouchPoint - lastTouchPointOnGridInkCanvasCover; + var delta = currentTouchPoint - lastDragPointInCanvas; // 只有当移动距离足够大时才进行拖动(避免微小移动造成的抖动) if (Math.Abs(delta.X) > 1 || Math.Abs(delta.Y) > 1) @@ -622,13 +627,14 @@ namespace Ink_Canvas updateBorderStrokeSelectionControlLocation(); // 更新最后触摸点 - lastTouchPointOnGridInkCanvasCover = currentTouchPoint; + lastDragPointInCanvas = currentTouchPoint; } } } } private Point lastTouchPointOnGridInkCanvasCover = new Point(0, 0); + private Point lastDragPointInCanvas = new Point(0, 0); private void LassoSelect_Click(object sender, RoutedEventArgs e) {