From a9b0ac0595d66c2601de3b9d5d04a79b84d74025 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Tue, 30 Sep 2025 19:15:03 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 92bb458345a0d21f245f5d673779cadad6ee67ff. --- Ink Canvas/App.xaml.cs | 3 +- Ink Canvas/Helpers/AvoidFullScreenHelper.cs | 9 ++-- Ink Canvas/Helpers/InkFadeManager.cs | 12 +++-- .../Plugins/BuiltIn/SuperLauncherPlugin.cs | 6 ++- Ink Canvas/Helpers/ScreenDetectionHelper.cs | 3 +- Ink Canvas/Helpers/WinTabWindowsChecker.cs | 6 ++- Ink Canvas/MainWindow.xaml.cs | 52 ++++++++++++------- Ink Canvas/MainWindow_cs/MW_BoardControls.cs | 10 ++-- Ink Canvas/MainWindow_cs/MW_BoardIcons.cs | 9 ++-- Ink Canvas/MainWindow_cs/MW_Eraser.cs | 5 +- .../MW_FloatingWindowInterceptor.cs | 3 +- Ink Canvas/MainWindow_cs/MW_Settings.cs | 3 +- Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs | 17 ++++-- Ink Canvas/MainWindow_cs/MW_TrayIcon.cs | 14 +++-- .../Windows/ScreenshotSelectorWindow.xaml.cs | 23 ++++---- .../SettingsViews/SettingsWindow.xaml.cs | 27 ++++++---- 16 files changed, 131 insertions(+), 71 deletions(-) diff --git a/Ink Canvas/App.xaml.cs b/Ink Canvas/App.xaml.cs index 4def5a10..2e4f8e12 100644 --- a/Ink Canvas/App.xaml.cs +++ b/Ink Canvas/App.xaml.cs @@ -299,7 +299,8 @@ namespace Ink_Canvas try { // 获取主窗口实例并清理PowerPoint进程守护 - if (Current.MainWindow is MainWindow mainWindow) + var mainWindow = Current.MainWindow as MainWindow; + if (mainWindow != null) { // 通过反射调用StopPowerPointProcessMonitoring方法 var method = mainWindow.GetType().GetMethod("StopPowerPointProcessMonitoring", diff --git a/Ink Canvas/Helpers/AvoidFullScreenHelper.cs b/Ink Canvas/Helpers/AvoidFullScreenHelper.cs index f978a5ed..06ef4db8 100644 --- a/Ink Canvas/Helpers/AvoidFullScreenHelper.cs +++ b/Ink Canvas/Helpers/AvoidFullScreenHelper.cs @@ -30,7 +30,8 @@ namespace Ink_Canvas.Helpers if (!(bool)window.GetValue(IsAvoidFullScreenEnabledProperty)) { - if (PresentationSource.FromVisual(window) is HwndSource hwndSource) + var hwndSource = PresentationSource.FromVisual(window) as HwndSource; + if (hwndSource != null) { hwndSource.AddHook(KeepInWorkingAreaHook); window.SetValue(IsAvoidFullScreenEnabledProperty, true); @@ -45,7 +46,8 @@ namespace Ink_Canvas.Helpers if ((bool)window.GetValue(IsAvoidFullScreenEnabledProperty)) { - if (PresentationSource.FromVisual(window) is HwndSource hwndSource) + var hwndSource = PresentationSource.FromVisual(window) as HwndSource; + if (hwndSource != null) { hwndSource.RemoveHook(KeepInWorkingAreaHook); window.ClearValue(IsAvoidFullScreenEnabledProperty); @@ -59,7 +61,8 @@ namespace Ink_Canvas.Helpers private static IntPtr KeepInWorkingAreaHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { // 只拦截主画布窗口的全屏(最大化)操作 - if (!(HwndSource.FromHwnd(hwnd)?.RootVisual is Window window)) return IntPtr.Zero; + var window = HwndSource.FromHwnd(hwnd)?.RootVisual as Window; + if (window == null) return IntPtr.Zero; // 这里假设主画布窗口类名为MainWindow(如有不同请调整) if (window.GetType().Name != "MainWindow") return IntPtr.Zero; diff --git a/Ink Canvas/Helpers/InkFadeManager.cs b/Ink Canvas/Helpers/InkFadeManager.cs index 892e5264..a13d1ea6 100644 --- a/Ink Canvas/Helpers/InkFadeManager.cs +++ b/Ink Canvas/Helpers/InkFadeManager.cs @@ -107,7 +107,8 @@ namespace Ink_Canvas.Helpers { // 将墨迹添加到 inkCanvas 的父容器中,而不是 inkCanvas.Children // 这样可以避免坐标系统问题 - if (_mainWindow.inkCanvas.Parent is Panel parent) + var parent = _mainWindow.inkCanvas.Parent as Panel; + if (parent != null) { parent.Children.Add(strokeVisual); } @@ -153,7 +154,8 @@ namespace Ink_Canvas.Helpers try { // 从父容器中移除墨迹 - if (_mainWindow.inkCanvas?.Parent is Panel parent && parent.Children.Contains(visual)) + var parent = _mainWindow.inkCanvas?.Parent as Panel; + if (parent != null && parent.Children.Contains(visual)) { parent.Children.Remove(visual); } @@ -511,7 +513,8 @@ namespace Ink_Canvas.Helpers originalVisual.Visibility = Visibility.Hidden; var segments = new List(); - if (!(_mainWindow.inkCanvas?.Parent is Panel parent)) + var parent = _mainWindow.inkCanvas?.Parent as Panel; + if (parent == null) { // 如果父容器不是Panel,直接使用InkCanvas parent = null; // 稍后会检查并使用InkCanvas.Children @@ -867,7 +870,8 @@ namespace Ink_Canvas.Helpers try { // 从父容器中移除墨迹 - if (_mainWindow.inkCanvas?.Parent is Panel parent && parent.Children.Contains(visual)) + var parent = _mainWindow.inkCanvas?.Parent as Panel; + if (parent != null && parent.Children.Contains(visual)) { parent.Children.Remove(visual); } diff --git a/Ink Canvas/Helpers/Plugins/BuiltIn/SuperLauncherPlugin.cs b/Ink Canvas/Helpers/Plugins/BuiltIn/SuperLauncherPlugin.cs index d243314f..555c7bf9 100644 --- a/Ink Canvas/Helpers/Plugins/BuiltIn/SuperLauncherPlugin.cs +++ b/Ink Canvas/Helpers/Plugins/BuiltIn/SuperLauncherPlugin.cs @@ -313,7 +313,8 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn var buttonElement = _launcherButton.Element; // 查找浮动栏 - if (!(mainWindow.FindName("StackPanelFloatingBar") is Panel floatingBar)) + var floatingBar = mainWindow.FindName("StackPanelFloatingBar") as Panel; + if (floatingBar == null) { // 如果直接查找失败,则尝试遍历可视树查找 Panel floatingBarPanelFromTree = null; @@ -404,7 +405,8 @@ namespace Ink_Canvas.Helpers.Plugins.BuiltIn var buttonElement = _launcherButton.Element; // 查找浮动栏 - if (!(mainWindow.FindName("StackPanelFloatingBar") is Panel floatingBar)) + var floatingBar = mainWindow.FindName("StackPanelFloatingBar") as Panel; + if (floatingBar == null) { // 如果直接查找失败,则尝试遍历可视树查找 Panel floatingBarPanelFromTree = null; diff --git a/Ink Canvas/Helpers/ScreenDetectionHelper.cs b/Ink Canvas/Helpers/ScreenDetectionHelper.cs index 5f9fb6ae..5d048a7f 100644 --- a/Ink Canvas/Helpers/ScreenDetectionHelper.cs +++ b/Ink Canvas/Helpers/ScreenDetectionHelper.cs @@ -25,7 +25,8 @@ namespace Ink_Canvas.Helpers return Screen.PrimaryScreen; // 获取窗口的句柄 - if (!(PresentationSource.FromVisual(window) is HwndSource hwndSource)) + var hwndSource = PresentationSource.FromVisual(window) as HwndSource; + if (hwndSource == null) return Screen.PrimaryScreen; // 获取窗口在屏幕上的位置 diff --git a/Ink Canvas/Helpers/WinTabWindowsChecker.cs b/Ink Canvas/Helpers/WinTabWindowsChecker.cs index 43f60b05..0f1a7577 100644 --- a/Ink Canvas/Helpers/WinTabWindowsChecker.cs +++ b/Ink Canvas/Helpers/WinTabWindowsChecker.cs @@ -61,7 +61,8 @@ namespace Ink_Canvas.Helpers { if (windowTitle.Length == windowName.Length) { - if (window.GetCurrentPattern(WindowPattern.Pattern) is WindowPattern windowPattern) + WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern; + if (windowPattern != null) { return true; } @@ -69,7 +70,8 @@ namespace Ink_Canvas.Helpers } else { - if (window.GetCurrentPattern(WindowPattern.Pattern) is WindowPattern windowPattern) + WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern; + if (windowPattern != null) { return true; } diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index fc7d8ff3..b152bf8e 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -26,7 +26,6 @@ using System.Windows.Threading; using Application = System.Windows.Application; using Brushes = System.Windows.Media.Brushes; using Button = System.Windows.Controls.Button; -using ComboBox = System.Windows.Controls.ComboBox; using Cursor = System.Windows.Input.Cursor; using Cursors = System.Windows.Input.Cursors; using DpiChangedEventArgs = System.Windows.DpiChangedEventArgs; @@ -329,7 +328,8 @@ namespace Ink_Canvas private void inkCanvas_EditingModeChanged(object sender, RoutedEventArgs e) { - if (!(sender is InkCanvas inkCanvas1)) return; + var inkCanvas1 = sender as InkCanvas; + if (inkCanvas1 == null) return; // 使用辅助方法设置光标 SetCursorBasedOnEditingMode(inkCanvas1); @@ -358,7 +358,8 @@ namespace Ink_Canvas if (inkCanvas1.EditingMode == InkCanvasEditingMode.Ink) forcePointEraser = !forcePointEraser; // 处理橡皮擦覆盖层的启用/禁用 - if (FindName("EraserOverlayCanvas") is Canvas eraserOverlay) + var eraserOverlay = FindName("EraserOverlayCanvas") as Canvas; + if (eraserOverlay != null) { if (inkCanvas1.EditingMode == InkCanvasEditingMode.EraseByPoint) { @@ -1300,7 +1301,8 @@ namespace Ink_Canvas BorderSettingsMask.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0)); // 获取SettingsPanelScrollViewer中的所有GroupBox - if (!(SettingsPanelScrollViewer.Content is StackPanel stackPanel)) return; + var stackPanel = SettingsPanelScrollViewer.Content as StackPanel; + if (stackPanel == null) return; // 确保所有GroupBox都是可见的 foreach (var child in stackPanel.Children) @@ -1515,15 +1517,20 @@ namespace Ink_Canvas // 清除所有导航按钮的Tag属性 private void ClearAllNavButtonTags() { - if (!(BorderSettings.Child is Grid grid)) return; + var grid = BorderSettings.Child as Grid; + if (grid == null) return; - if (!(grid.Children[0] is Border navSidebar)) return; + var navSidebar = grid.Children[0] as Border; + if (navSidebar == null) return; - if (!(navSidebar.Child is Grid navGrid)) return; + var navGrid = navSidebar.Child as Grid; + if (navGrid == null) return; - if (!(navGrid.Children[1] is ScrollViewer scrollViewer)) return; + var scrollViewer = navGrid.Children[1] as ScrollViewer; + if (scrollViewer == null) return; - if (!(scrollViewer.Content is StackPanel stackPanel)) return; + var stackPanel = scrollViewer.Content as StackPanel; + if (stackPanel == null) return; foreach (var child in stackPanel.Children) { @@ -1537,24 +1544,30 @@ namespace Ink_Canvas // 设置导航按钮的Tag属性 private void SetNavButtonTag(string tag) { - if (!(BorderSettings.Child is Grid grid)) return; + var grid = BorderSettings.Child as Grid; + if (grid == null) return; - if (!(grid.Children[0] is Border navSidebar)) return; + var navSidebar = grid.Children[0] as Border; + if (navSidebar == null) return; - if (!(navSidebar.Child is Grid navGrid)) return; + var navGrid = navSidebar.Child as Grid; + if (navGrid == null) return; - if (!(navGrid.Children[1] is ScrollViewer scrollViewer)) return; + var scrollViewer = navGrid.Children[1] as ScrollViewer; + if (scrollViewer == null) return; - if (!(scrollViewer.Content is StackPanel stackPanel)) return; + var stackPanel = scrollViewer.Content as StackPanel; + if (stackPanel == null) return; foreach (var child in stackPanel.Children) { if (child is Button button) { // 检查按钮的ToolTip属性,根据tag设置对应的按钮 + string buttonTag = button.Tag as string; // 如果按钮的Tag与要设置的tag匹配,则设置Tag - if (button.Tag is string buttonTag && buttonTag.ToLower() == tag.ToLower()) + if (buttonTag != null && buttonTag.ToLower() == tag.ToLower()) { button.Tag = tag; return; @@ -2533,7 +2546,8 @@ namespace Ink_Canvas try { // 获取滑块的轨道元素 - if (!(slider.Template.FindName("PART_Track", slider) is Track track)) + var track = slider.Template.FindName("PART_Track", slider) as Track; + if (track == null) { // 如果找不到轨道,使用简单方法 UpdateSliderValueFromPosition(slider, position); @@ -2660,7 +2674,8 @@ namespace Ink_Canvas { try { - if (sender is ToggleSwitch toggle) + var toggle = sender as ToggleSwitch; + if (toggle != null) { Settings.ModeSettings.IsPPTOnlyMode = toggle.IsOn; @@ -2758,7 +2773,8 @@ namespace Ink_Canvas try { - if (sender is ComboBox comboBox) + System.Windows.Controls.ComboBox comboBox = sender as System.Windows.Controls.ComboBox; + if (comboBox != null) { Settings.Appearance.Theme = comboBox.SelectedIndex; diff --git a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs index 895fe12d..e4262503 100644 --- a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs +++ b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs @@ -238,8 +238,9 @@ namespace Ink_Canvas RefreshBlackBoardSidePageListView(); AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderLeftPageListView); await Task.Delay(1); - if (BlackBoardLeftSidePageListView.ItemContainerGenerator.ContainerFromIndex( - CurrentWhiteboardIndex - 1) is ListViewItem leftContainer) + var leftContainer = BlackBoardLeftSidePageListView.ItemContainerGenerator.ContainerFromIndex( + CurrentWhiteboardIndex - 1) as ListViewItem; + if (leftContainer != null) { ScrollViewToVerticalTop(leftContainer, BlackBoardLeftSidePageListScrollViewer); } @@ -257,8 +258,9 @@ namespace Ink_Canvas RefreshBlackBoardSidePageListView(); AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBorderRightPageListView); await Task.Delay(1); - if (BlackBoardRightSidePageListView.ItemContainerGenerator.ContainerFromIndex( - CurrentWhiteboardIndex - 1) is ListViewItem rightContainer) + var rightContainer = BlackBoardRightSidePageListView.ItemContainerGenerator.ContainerFromIndex( + CurrentWhiteboardIndex - 1) as ListViewItem; + if (rightContainer != null) { ScrollViewToVerticalTop(rightContainer, BlackBoardRightSidePageListScrollViewer); } diff --git a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs index 017700cd..ab4a399e 100644 --- a/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs @@ -504,7 +504,8 @@ namespace Ink_Canvas BackgroundPalette.Child = stackPanel; // 获取主窗口中的根网格,确保面板添加到顶层 - if (FindName("Main_Grid") is Grid mainGrid) + Grid mainGrid = FindName("Main_Grid") as Grid; + if (mainGrid != null) { // 删除可能已存在的BackgroundPalette foreach (UIElement element in mainGrid.Children) @@ -525,7 +526,8 @@ namespace Ink_Canvas mainGrid.Children.Add(BackgroundPalette); // 设置面板位置 - if (FindName("BoardChangeBackgroundColorBtn") is FrameworkElement clickElement) + var clickElement = FindName("BoardChangeBackgroundColorBtn") as FrameworkElement; + if (clickElement != null) { Point position = clickElement.TranslatePoint(new Point(0, 0), mainGrid); BackgroundPalette.Margin = new Thickness( @@ -549,9 +551,10 @@ namespace Ink_Canvas { if (modePanel.Children.Count > 1) { + var whiteboardButton = modePanel.Children[0] as Border; var blackboardButton = modePanel.Children[1] as Border; - if (modePanel.Children[0] is Border whiteboardButton && whiteboardButton.Child is TextBlock whiteboardText) + if (whiteboardButton != null && whiteboardButton.Child is TextBlock whiteboardText) { whiteboardButton.Background = Settings.Canvas.UsingWhiteboard ? new SolidColorBrush(Color.FromRgb(0x25, 0x63, 0xeb)) : diff --git a/Ink Canvas/MainWindow_cs/MW_Eraser.cs b/Ink Canvas/MainWindow_cs/MW_Eraser.cs index 887a8726..e5d21a04 100644 --- a/Ink Canvas/MainWindow_cs/MW_Eraser.cs +++ b/Ink Canvas/MainWindow_cs/MW_Eraser.cs @@ -85,8 +85,9 @@ namespace Ink_Canvas // 根据橡皮擦形状选择对应的图像资源 string resourceKey = isEraserCircleShape ? "EllipseEraserImageSource" : "RectangleEraserImageSource"; - - if (TryFindResource(resourceKey) is DrawingImage imageSource) + var imageSource = TryFindResource(resourceKey) as DrawingImage; + + if (imageSource != null) { eraserFeedback.Source = imageSource; } diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs index 4d1a4089..1df2cdf7 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs @@ -53,7 +53,8 @@ namespace Ink_Canvas foreach (var kvp in Settings.Automation.FloatingWindowInterceptor.InterceptRules) { var toggleName = $"ToggleSwitch{kvp.Key}"; - if (FindName(toggleName) is ToggleSwitch toggle) + var toggle = FindName(toggleName) as ToggleSwitch; + if (toggle != null) { toggle.IsOn = kvp.Value; } diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs index 75bb9482..9b40bdb3 100644 --- a/Ink Canvas/MainWindow_cs/MW_Settings.cs +++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs @@ -2895,7 +2895,8 @@ namespace Ink_Canvas private async void UpdateChannelSelector_Checked(object sender, RoutedEventArgs e) { if (!isLoaded) return; - if (sender is RadioButton radioButton) + var radioButton = sender as RadioButton; + if (radioButton != null) { string channel = radioButton.Tag.ToString(); UpdateChannel newChannel = channel == "Beta" ? UpdateChannel.Beta : UpdateChannel.Release; diff --git a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs index 083b5faf..b2840d8a 100644 --- a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs +++ b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs @@ -489,16 +489,20 @@ namespace Ink_Canvas { SetCursorBasedOnEditingMode(inkCanvas); } - + + // 修复:几何绘制模式下完全禁止触摸轨迹收集 if (drawingShapeMode != 0) { + // 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集 inkCanvas.EditingMode = InkCanvasEditingMode.None; if (isWaitUntilNextTouchDown && dec.Count > 1) return; if (dec.Count > 1) { + // 修复:双曲线绘制时,多指触摸不应该删除第一笔的辅助线 if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1) { + // 第二笔绘制双曲线时,只删除第二笔的临时笔画,保留第一笔的辅助线 try { inkCanvas.Strokes.Remove(lastTempStroke); @@ -519,10 +523,13 @@ namespace Ink_Canvas } return; } - + + // 修复:双曲线绘制时,第二笔应该基于第一笔的起点,而不是触摸实时位置 Point touchPoint = e.GetTouchPoint(inkCanvas).Position; if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1) { + // 第二笔绘制双曲线时,使用触摸位置作为终点,但保持第一笔的起点 + // 这里不需要特殊处理,因为MouseTouchMove函数内部已经正确处理了双曲线的绘制逻辑 MouseTouchMove(touchPoint); } else @@ -531,13 +538,15 @@ namespace Ink_Canvas MouseTouchMove(touchPoint); } - return; + return; // 处理完几何绘制后直接返回,不执行后面的代码 } - + + // 其它模式下,允许橡皮、套索、批注等正常工作,不覆盖EditingMode if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint || inkCanvas.EditingMode == InkCanvasEditingMode.Select || inkCanvas.EditingMode == InkCanvasEditingMode.Ink) { + // 允许正常橡皮、套索、批注 } } diff --git a/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs b/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs index 2c5d209d..678f8232 100644 --- a/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs +++ b/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs @@ -211,18 +211,22 @@ namespace Ink_Canvas // 获取全局快捷键管理器 var hotkeyManagerField = typeof(MainWindow).GetField("_globalHotkeyManager", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - - if (hotkeyManagerField?.GetValue(mainWin) is GlobalHotkeyManager hotkeyManager) + var hotkeyManager = hotkeyManagerField?.GetValue(mainWin) as GlobalHotkeyManager; + + if (hotkeyManager != null) { // 禁用所有快捷键 hotkeyManager.DisableHotkeyRegistration(); // 更新菜单项文本和状态 - if (sender is MenuItem menuItem) + var menuItem = sender as MenuItem; + if (menuItem != null) { - if (menuItem.Header is SimpleStackPanel headerPanel) + var headerPanel = menuItem.Header as SimpleStackPanel; + if (headerPanel != null) { - if (headerPanel.Children[0] is TextBlock textBlock) + var textBlock = headerPanel.Children[0] as TextBlock; + if (textBlock != null) { if (textBlock.Text == "禁用所有快捷键") { diff --git a/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml.cs b/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml.cs index 0eba067e..a03480dc 100644 --- a/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml.cs +++ b/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml.cs @@ -517,17 +517,18 @@ namespace Ink_Canvas private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { // 检查是否点击了UI元素,如果是则不处理选择 - if (e.Source is FrameworkElement hitElement && ( - hitElement is Ellipse || - hitElement is System.Windows.Controls.Button || - hitElement is Border || - hitElement is TextBlock || - hitElement is StackPanel || - hitElement is Separator || - hitElement.Name == "SizeInfoBorder" || - hitElement.Name == "HintText" || - hitElement.Name == "AdjustModeHint" || - hitElement.Name == "SelectionRectangle")) + var hitElement = e.Source as FrameworkElement; + if (hitElement != null && ( + hitElement is Ellipse || + hitElement is System.Windows.Controls.Button || + hitElement is Border || + hitElement is TextBlock || + hitElement is StackPanel || + hitElement is Separator || + hitElement.Name == "SizeInfoBorder" || + hitElement.Name == "HintText" || + hitElement.Name == "AdjustModeHint" || + hitElement.Name == "SelectionRectangle")) { return; } diff --git a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs index 93f879d4..583f1021 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs @@ -440,14 +440,16 @@ namespace Ink_Canvas.Windows private void ToggleSwitch_Click(object sender, MouseButtonEventArgs e) { - if (sender is Border border) + var border = sender as Border; + if (border != null) { // 切换开关状态 bool isOn = border.Background.ToString() == "#FF3584E4"; border.Background = isOn ? new SolidColorBrush(Color.FromRgb(225, 225, 225)) : new SolidColorBrush(Color.FromRgb(53, 132, 228)); // 切换内部圆点的位置 - if (border.Child is Border innerBorder) + var innerBorder = border.Child as Border; + if (innerBorder != null) { innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Left : HorizontalAlignment.Right; } @@ -555,7 +557,8 @@ namespace Ink_Canvas.Windows private void OptionButton_Click(object sender, MouseButtonEventArgs e) { - if (sender is Border border) + var border = sender as Border; + if (border != null) { string tag = border.Tag?.ToString(); if (!string.IsNullOrEmpty(tag)) @@ -565,7 +568,8 @@ namespace Ink_Canvas.Windows // 设置当前按钮为选中状态 border.Background = new SolidColorBrush(Color.FromRgb(225, 225, 225)); - if (border.Child is TextBlock textBlock) + var textBlock = border.Child as TextBlock; + if (textBlock != null) { textBlock.FontWeight = FontWeights.Bold; } @@ -579,7 +583,8 @@ namespace Ink_Canvas.Windows private void ClearOtherOptionsInGroup(Border currentBorder, string currentTag) { // 获取当前按钮所在的父容器 - if (currentBorder.Parent is StackPanel parent) + var parent = currentBorder.Parent as StackPanel; + if (parent != null) { // 获取组名(Tag中下划线前的部分) string groupName = currentTag.Split('_')[0]; @@ -593,7 +598,8 @@ namespace Ink_Canvas.Windows if (!string.IsNullOrEmpty(childTag) && childTag.StartsWith(groupName + "_")) { border.Background = new SolidColorBrush(Colors.Transparent); - if (border.Child is TextBlock textBlock) + var textBlock = border.Child as TextBlock; + if (textBlock != null) { textBlock.FontWeight = FontWeights.Normal; } @@ -770,7 +776,8 @@ namespace Ink_Canvas.Windows if (child is Border border && border.Background != null) { - if (border.Background is SolidColorBrush brush && brush.Color.ToString() == "#FFDEDEDE") + var brush = border.Background as SolidColorBrush; + if (brush != null && brush.Color.ToString() == "#FFDEDEDE") { return border; } @@ -793,7 +800,8 @@ namespace Ink_Canvas.Windows if (child is Border border && border.Background != null) { - if (border.Background is SolidColorBrush brush && brush.Color.ToString() == "#FF3584E4") + var brush = border.Background as SolidColorBrush; + if (brush != null && brush.Color.ToString() == "#FF3584E4") { return border; } @@ -951,7 +959,8 @@ namespace Ink_Canvas.Windows var relativePosition = Math.Max(0, Math.Min(1, adjustedX / effectiveWidth)); // 更新滑块位置 - if (!(customSlider.ThumbImage.RenderTransform is TranslateTransform thumbTransform)) + var thumbTransform = customSlider.ThumbImage.RenderTransform as TranslateTransform; + if (thumbTransform == null) { thumbTransform = new TranslateTransform(); customSlider.ThumbImage.RenderTransform = thumbTransform;