From 836e0b0fdea861c63087036301c750076a4fba0c Mon Sep 17 00:00:00 2001 From: PrefacedCorg <1876568293@qq.com> Date: Sat, 11 Apr 2026 13:42:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=B5=AE=E5=8A=A8=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E4=BD=BF=E7=94=A8=E6=96=B0=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/ToolbarImageButton.xaml.cs | 12 + Ink Canvas/MainWindow.xaml | 215 +++--------------- .../MainWindow_cs/MW_FloatingBarIcons.cs | 49 +--- Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs | 8 +- 4 files changed, 56 insertions(+), 228 deletions(-) diff --git a/Ink Canvas/Controls/ToolbarImageButton.xaml.cs b/Ink Canvas/Controls/ToolbarImageButton.xaml.cs index 80d0b696..8c52132b 100644 --- a/Ink Canvas/Controls/ToolbarImageButton.xaml.cs +++ b/Ink Canvas/Controls/ToolbarImageButton.xaml.cs @@ -57,10 +57,20 @@ namespace Ink_Canvas.Controls { InitializeComponent(); ButtonPanel.Background = Brushes.Transparent; + IsEnabledChanged += ToolbarImageButton_IsEnabledChanged; + } + + private void ToolbarImageButton_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) + { + var isEnabled = (bool)e.NewValue; + ButtonImage.Opacity = isEnabled ? 1.0 : 0.5; + LabelTextBlock.Opacity = isEnabled ? 1.0 : 0.5; + ButtonPanel.IsEnabled = isEnabled; } private void ButtonPanel_MouseDown(object sender, MouseButtonEventArgs e) { + if (!IsEnabled) return; if (_lastPressedButton != null && _lastPressedButton != this) { _lastPressedButton.Background = Brushes.Transparent; @@ -72,11 +82,13 @@ namespace Ink_Canvas.Controls private void ButtonPanel_MouseLeave(object sender, MouseEventArgs e) { + if (!IsEnabled) return; ButtonMouseLeave?.Invoke(this, e); } private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e) { + if (!IsEnabled) return; if (_lastPressedButton == this) { ButtonPanel.Background = Brushes.Transparent; diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index c051c581..2c2241cb 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -7935,28 +7935,11 @@ - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -9271,55 +9169,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconUndo_MouseUp(object sender, MouseButtonEventArgs e) + internal void SymbolIconUndo_MouseUp(object sender, RoutedEventArgs e) { - //if (lastBorderMouseDownObject != sender) return; - - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == SymbolIconUndo && lastBorderMouseDownObject != SymbolIconUndo) return; - if (!BtnUndo.IsEnabled) return; BtnUndo_Click(BtnUndo, null); HideSubPanels(); @@ -643,14 +637,8 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconRedo_MouseUp(object sender, MouseButtonEventArgs e) + internal void SymbolIconRedo_MouseUp(object sender, RoutedEventArgs e) { - //if (lastBorderMouseDownObject != sender) return; - - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == SymbolIconRedo && lastBorderMouseDownObject != SymbolIconRedo) return; - if (!BtnRedo.IsEnabled) return; BtnRedo_Click(BtnRedo, null); HideSubPanels(); @@ -670,13 +658,9 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void ImageBlackboard_MouseUp(object sender, MouseButtonEventArgs e) + internal void ImageBlackboard_MouseUp(object sender, RoutedEventArgs e) { - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == WhiteboardFloatingBarBtn && lastBorderMouseDownObject != WhiteboardFloatingBarBtn) return; - LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed; RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed; if (isDisplayingOrHidingBlackboard) return; @@ -948,13 +932,8 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconDelete_MouseUp(object sender, MouseButtonEventArgs e) + internal void SymbolIconDelete_MouseUp(object sender, RoutedEventArgs e) { - - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == SymbolIconDelete && lastBorderMouseDownObject != SymbolIconDelete) return; - if (inkCanvas.GetSelectedStrokes().Count > 0) { inkCanvas.Strokes.Remove(inkCanvas.GetSelectedStrokes()); @@ -1026,8 +1005,7 @@ namespace Ink_Canvas if (sender is Panel panel) { lastBorderMouseDownObject = sender; - if (panel == SymbolIconDelete) panel.Background = new SolidColorBrush(Color.FromArgb(28, 127, 29, 29)); - else panel.Background = new SolidColorBrush(Color.FromArgb(28, 24, 24, 27)); + panel.Background = new SolidColorBrush(Color.FromArgb(28, 24, 24, 27)); } else if (sender is Border border) { @@ -1724,13 +1702,8 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - private void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e) + private void SymbolIconTools_MouseUp(object sender, RoutedEventArgs e) { - - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == ToolsFloatingBarBtn && lastBorderMouseDownObject != ToolsFloatingBarBtn) return; - if (BorderTools.Visibility == Visibility.Visible) { AnimationsHelper.HideWithSlideAndFade(BorderTools); @@ -1742,11 +1715,6 @@ namespace Ink_Canvas AnimationsHelper.ShowWithSlideFromBottomAndFade(BorderTools); AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderTools); } - - if (sender == ToolsFloatingBarBtn) - { - lastBorderMouseDownObject = null; - } } /// @@ -2643,11 +2611,6 @@ namespace Ink_Canvas /// 路由事件参数 private void CursorWithDelIcon_Click(object sender, RoutedEventArgs e) { - - if (lastBorderMouseDownObject is Panel panel) - panel.Background = new SolidColorBrush(Colors.Transparent); - if (sender == CursorWithDelFloatingBarBtn && lastBorderMouseDownObject != CursorWithDelFloatingBarBtn) return; - SymbolIconDelete_MouseUp(sender, null); CursorIcon_Click(null, null); } diff --git a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs index 2b09e2e4..d97dffc5 100644 --- a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs +++ b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs @@ -33,14 +33,8 @@ namespace Ink_Canvas /// 3. 如果形状绘制面板可见,则隐藏它 /// 4. 如果形状绘制面板不可见,则显示它 /// - private void ImageDrawShape_MouseUp(object sender, MouseButtonEventArgs e) + private void ImageDrawShape_MouseUp(object sender, RoutedEventArgs e) { - - if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel) - ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); - if (sender == ShapeDrawFloatingBarBtn && lastBorderMouseDownObject != ShapeDrawFloatingBarBtn) return; - - // FloatingBarIcons_MouseUp_New(sender); if (BorderDrawShape.Visibility == Visibility.Visible) { AnimationsHelper.HideWithSlideAndFade(BorderDrawShape);