diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index fcd72650..0d950294 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -810,6 +810,29 @@ namespace Ink_Canvas { { // 使用辅助方法设置光标 SetCursorBasedOnEditingMode(sender as InkCanvas); + + // 在选择模式下,如果点击的不是UI元素,则取消选择 + if (inkCanvas.EditingMode == InkCanvasEditingMode.Select) + { + var hitTest = e.OriginalSource; + // 如果点击的不是图片或其他UI元素,则取消选择 + if (!(hitTest is Image) && !(hitTest is MediaElement)) + { + // 检查是否点击在已选择的UI元素上 + bool clickedOnSelectedElement = false; + if (selectedUIElement != null) + { + var elementBounds = GetUIElementBounds(selectedUIElement); + var clickPoint = e.GetPosition(inkCanvas); + clickedOnSelectedElement = elementBounds.Contains(clickPoint); + } + + if (!clickedOnSelectedElement) + { + DeselectUIElement(); + } + } + } } // 手写笔输入 diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 3f58c4f9..af7bd1a6 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -2086,6 +2086,10 @@ namespace Ink_Canvas { InkCanvas.SetTop(image, 0); inkCanvas.Children.Add(image); + // 添加鼠标事件处理,使图片可以被选择 + image.MouseDown += UIElement_MouseDown; + image.IsManipulationEnabled = true; + timeMachine.CommitElementInsertHistory(image); } } diff --git a/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs b/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs index 6e7042fb..0ba7d088 100644 --- a/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs +++ b/Ink Canvas/MainWindow_cs/MW_SelectionGestures.cs @@ -470,7 +470,7 @@ namespace Ink_Canvas { // 图片工具栏相关 private Border borderImageSelectionControl; - private double BorderImageSelectionControlWidth = 200.0; + private double BorderImageSelectionControlWidth = 150.0; // 3个按钮 + 分隔线的实际宽度 private double BorderImageSelectionControlHeight = 80.0; private enum ResizeDirection @@ -597,16 +597,14 @@ namespace Ink_Canvas { InitializeUIElementSelection(); } - // 根据元素类型显示不同的工具栏 + // 显示拖拽手柄(所有UI元素都需要) + ShowResizeHandles(); + + // 根据元素类型显示特定的工具栏 if (element is Image) { ShowImageToolbar(); } - else - { - // 对于其他UI元素,显示拖拽手柄 - ShowResizeHandles(); - } } }