From 8172b7c776e65e7c628ccde1355a93cbb7c1d0a2 Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Sat, 27 Dec 2025 18:13:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A7=A6=E6=91=B8=E5=A2=A8=E8=BF=B9?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_TouchEvents.cs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index b9e4b278..8e4020df 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; +using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; @@ -581,6 +582,27 @@ namespace Ink_Canvas var touchPoint = e.GetTouchPoint(inkCanvas); centerPoint = touchPoint.Position; + // 检查是否有选中的墨迹,如果有且触摸点在选择框外,则取消选择 + if (inkCanvas.EditingMode == InkCanvasEditingMode.Select && inkCanvas.GetSelectedStrokes().Count > 0) + { + var touchPosition = touchPoint.Position; + var selectionBounds = inkCanvas.GetSelectionBounds(); + + // 检查触摸位置是否在选择框边界外 + if (touchPosition.X < selectionBounds.Left || + touchPosition.X > selectionBounds.Right || + touchPosition.Y < selectionBounds.Top || + touchPosition.Y > selectionBounds.Bottom) + { + // 触摸在选择框外,取消选择 + inkCanvas.Select(new StrokeCollection()); + if (GridInkCanvasSelectionCover != null) + { + GridInkCanvasSelectionCover.Visibility = Visibility.Collapsed; + } + } + } + //记录第一根手指点击时的 StrokeCollection lastTouchDownStrokeCollection = inkCanvas.Strokes.Clone(); }