From fae08a5285237b905608620b393b45fc3db514df Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 27 Dec 2025 21:16:55 +0800
Subject: [PATCH] Revert "improve:issue #332"
This reverts commit ca4d2ac4a26073590fa0c013020a511dfcca8bcd.
---
.../Windows/MinimizedTimerControl.xaml.cs | 200 ------------------
Ink Canvas/Windows/TimerControl.xaml.cs | 124 -----------
2 files changed, 324 deletions(-)
diff --git a/Ink Canvas/Windows/MinimizedTimerControl.xaml.cs b/Ink Canvas/Windows/MinimizedTimerControl.xaml.cs
index 9aecf829..377c76da 100644
--- a/Ink Canvas/Windows/MinimizedTimerControl.xaml.cs
+++ b/Ink Canvas/Windows/MinimizedTimerControl.xaml.cs
@@ -31,213 +31,13 @@ namespace Ink_Canvas.Windows
// 监听主题变化事件
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
- // 监听分辨率变化事件
- SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
-
Unloaded += MinimizedTimerControl_Unloaded;
-
- // 监听加载事件,设置UI大小
- Loaded += MinimizedTimerControl_Loaded;
- }
-
- private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
- {
- // 分辨率变化时重新计算大小
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateMinimizedTimerControlSize();
- }), System.Windows.Threading.DispatcherPriority.Loaded);
- }
-
- private void MainWindow_DpiChanged(object sender, DpiChangedEventArgs e)
- {
- // DPI变化时重新计算大小
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateMinimizedTimerControlSize();
- }), System.Windows.Threading.DispatcherPriority.Loaded);
- }
-
- private void MinimizedTimerControl_Loaded(object sender, RoutedEventArgs e)
- {
- // 根据DPI和分辨率限制UI大小为屏幕的35%
- UpdateMinimizedTimerControlSize();
-
- // 监听DPI变化事件(通过主窗口)
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow != null)
- {
- mainWindow.DpiChanged += MainWindow_DpiChanged;
- }
- }
-
- ///
- /// 根据DPI和分辨率更新最小化计时器控件大小,限制在屏幕大小的35%
- ///
- private void UpdateMinimizedTimerControlSize()
- {
- try
- {
- // 获取主窗口
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow == null) return;
-
- // 获取DPI缩放因子
- var source = PresentationSource.FromVisual(mainWindow);
- double dpiScaleX = 1.0, dpiScaleY = 1.0;
- if (source != null && source.CompositionTarget != null)
- {
- var transform = source.CompositionTarget.TransformToDevice;
- dpiScaleX = transform.M11;
- dpiScaleY = transform.M22;
- }
-
- // 获取屏幕工作区域大小(考虑DPI)
- double screenWidth = SystemParameters.WorkArea.Width / dpiScaleX;
- double screenHeight = SystemParameters.WorkArea.Height / dpiScaleY;
-
- // 计算最大尺寸(屏幕的35%)
- double maxWidth = screenWidth * 0.35;
- double maxHeight = screenHeight * 0.35;
-
- // 保持宽高比(基于原始设计尺寸 600x200,宽高比约为 3:1)
- double aspectRatio = 600.0 / 200.0;
- double calculatedWidth = maxWidth;
- double calculatedHeight = calculatedWidth / aspectRatio;
-
- // 如果计算出的高度超过最大高度,则按高度计算
- if (calculatedHeight > maxHeight)
- {
- calculatedHeight = maxHeight;
- calculatedWidth = calculatedHeight * aspectRatio;
- }
-
- // 计算缩放比例(基于原始尺寸600x200)
- double originalWidth = 600.0;
- double originalHeight = 200.0;
- double scaleX = calculatedWidth / originalWidth;
- double scaleY = calculatedHeight / originalHeight;
- double scale = Math.Min(scaleX, scaleY); // 使用较小的缩放比例以保持比例
-
- // 查找父容器(MinimizedTimerContainer)
- var parent = this.Parent as FrameworkElement;
- if (parent == null)
- {
- // 如果直接父元素不是FrameworkElement,尝试查找Border
- var visualParent = System.Windows.Media.VisualTreeHelper.GetParent(this);
- while (visualParent != null)
- {
- if (visualParent is FrameworkElement fe && fe.Name == "MinimizedTimerContainer")
- {
- parent = fe;
- break;
- }
- visualParent = System.Windows.Media.VisualTreeHelper.GetParent(visualParent);
- }
- }
-
- if (parent != null)
- {
- // 设置父容器大小
- parent.Width = calculatedWidth;
- parent.Height = calculatedHeight;
-
- // 更新数字显示(Path元素)的大小 - 原始尺寸72x72
- double digitSize = 72.0 * scale;
- UpdateElementSize("MinHour1Display", digitSize, digitSize);
- UpdateElementSize("MinHour2Display", digitSize, digitSize);
- UpdateElementSize("MinMinute1Display", digitSize, digitSize);
- UpdateElementSize("MinMinute2Display", digitSize, digitSize);
- UpdateElementSize("MinSecond1Display", digitSize, digitSize);
- UpdateElementSize("MinSecond2Display", digitSize, digitSize);
-
- // 更新冒号字体大小 - 原始尺寸48
- double colonFontSize = 48.0 * scale;
- UpdateTextBlockFontSize("MinColon1Display", colonFontSize);
- UpdateTextBlockFontSize("MinColon2Display", colonFontSize);
-
- // 更新关闭按钮大小 - 原始尺寸24x24
- double closeButtonSize = 24.0 * scale;
- UpdateElementSize("CloseButton", closeButtonSize, closeButtonSize);
-
- // 更新关闭按钮字体大小 - 原始尺寸12
- double closeButtonFontSize = 12.0 * scale;
- var closeButton = this.FindName("CloseButton") as System.Windows.Controls.Button;
- if (closeButton != null)
- {
- var textBlock = closeButton.Content as System.Windows.Controls.TextBlock;
- if (textBlock != null)
- {
- textBlock.FontSize = closeButtonFontSize;
- }
- }
-
- // 更新Margin - 原始Margin是12,需要按比例缩放
- double marginSize = 12.0 * scale;
- UpdateElementMargin("MinHour1Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinHour2Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinColon1Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinMinute1Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinMinute2Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinColon2Display", new Thickness(0, 0, marginSize, 0));
- UpdateElementMargin("MinSecond1Display", new Thickness(0, 0, marginSize, 0));
- }
- }
- catch (Exception ex)
- {
- System.Diagnostics.Debug.WriteLine($"更新最小化计时器控件大小失败: {ex.Message}");
- }
- }
-
- ///
- /// 更新元素的大小
- ///
- private void UpdateElementSize(string elementName, double width, double height)
- {
- var element = this.FindName(elementName) as FrameworkElement;
- if (element != null)
- {
- element.Width = width;
- element.Height = height;
- }
- }
-
- ///
- /// 更新TextBlock的字体大小
- ///
- private void UpdateTextBlockFontSize(string elementName, double fontSize)
- {
- var textBlock = this.FindName(elementName) as System.Windows.Controls.TextBlock;
- if (textBlock != null)
- {
- textBlock.FontSize = fontSize;
- }
- }
-
- ///
- /// 更新元素的Margin
- ///
- private void UpdateElementMargin(string elementName, Thickness margin)
- {
- var element = this.FindName(elementName) as FrameworkElement;
- if (element != null)
- {
- element.Margin = margin;
- }
}
private void MinimizedTimerControl_Unloaded(object sender, RoutedEventArgs e)
{
// 取消订阅主题变化事件
SystemEvents.UserPreferenceChanged -= SystemEvents_UserPreferenceChanged;
- SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;
-
- // 取消订阅DPI变化事件
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow != null)
- {
- mainWindow.DpiChanged -= MainWindow_DpiChanged;
- }
if (parentControl != null)
{
diff --git a/Ink Canvas/Windows/TimerControl.xaml.cs b/Ink Canvas/Windows/TimerControl.xaml.cs
index ede2d4fc..f7238908 100644
--- a/Ink Canvas/Windows/TimerControl.xaml.cs
+++ b/Ink Canvas/Windows/TimerControl.xaml.cs
@@ -48,138 +48,14 @@ namespace Ink_Canvas.Windows
// 监听主题变化事件
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
- // 监听分辨率变化事件
- SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
-
// 监听卸载事件,清理资源
Unloaded += TimerControl_Unloaded;
-
- // 监听加载事件,设置UI大小
- Loaded += TimerControl_Loaded;
- }
-
- private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
- {
- // 分辨率变化时重新计算大小
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateTimerControlSize();
- }), System.Windows.Threading.DispatcherPriority.Loaded);
- }
-
- private void MainWindow_DpiChanged(object sender, DpiChangedEventArgs e)
- {
- // DPI变化时重新计算大小
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateTimerControlSize();
- }), System.Windows.Threading.DispatcherPriority.Loaded);
- }
-
- private void TimerControl_Loaded(object sender, RoutedEventArgs e)
- {
- // 根据DPI和分辨率限制UI大小为屏幕的50%
- UpdateTimerControlSize();
-
- // 监听DPI变化事件(通过主窗口)
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow != null)
- {
- mainWindow.DpiChanged += MainWindow_DpiChanged;
- }
- }
-
- ///
- /// 根据DPI和分辨率更新计时器控件大小,限制在屏幕大小的50%
- ///
- private void UpdateTimerControlSize()
- {
- try
- {
- // 获取主窗口
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow == null) return;
-
- // 获取DPI缩放因子
- var source = PresentationSource.FromVisual(mainWindow);
- double dpiScaleX = 1.0, dpiScaleY = 1.0;
- if (source != null && source.CompositionTarget != null)
- {
- var transform = source.CompositionTarget.TransformToDevice;
- dpiScaleX = transform.M11;
- dpiScaleY = transform.M22;
- }
-
- // 获取屏幕工作区域大小(考虑DPI)
- double screenWidth = SystemParameters.WorkArea.Width / dpiScaleX;
- double screenHeight = SystemParameters.WorkArea.Height / dpiScaleY;
-
- // 计算最大尺寸(屏幕的50%)
- double maxWidth = screenWidth * 0.5;
- double maxHeight = screenHeight * 0.5;
-
- // 保持宽高比(基于原始设计尺寸 900x500,宽高比约为 1.8:1)
- double aspectRatio = 900.0 / 500.0;
- double calculatedWidth = maxWidth;
- double calculatedHeight = calculatedWidth / aspectRatio;
-
- // 如果计算出的高度超过最大高度,则按高度计算
- if (calculatedHeight > maxHeight)
- {
- calculatedHeight = maxHeight;
- calculatedWidth = calculatedHeight * aspectRatio;
- }
-
- // 查找父容器(TimerContainer)
- var parent = this.Parent as FrameworkElement;
- if (parent == null)
- {
- // 如果直接父元素不是FrameworkElement,尝试查找Border
- var visualParent = System.Windows.Media.VisualTreeHelper.GetParent(this);
- while (visualParent != null)
- {
- if (visualParent is FrameworkElement fe && fe.Name == "TimerContainer")
- {
- parent = fe;
- break;
- }
- visualParent = System.Windows.Media.VisualTreeHelper.GetParent(visualParent);
- }
- }
-
- if (parent != null)
- {
- // 设置父容器大小
- parent.Width = calculatedWidth;
- parent.Height = calculatedHeight;
-
- // 更新Viewbox的MaxWidth和MaxHeight以确保内容正确缩放
- if (MainViewController != null)
- {
- // Viewbox会自动缩放,但我们需要确保它不会超过父容器
- MainViewController.MaxWidth = calculatedWidth - 40; // 减去Margin
- MainViewController.MaxHeight = calculatedHeight - 40;
- }
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile($"更新计时器控件大小失败: {ex.Message}", LogHelper.LogType.Error);
- }
}
private void TimerControl_Unloaded(object sender, RoutedEventArgs e)
{
// 取消订阅主题变化事件
SystemEvents.UserPreferenceChanged -= SystemEvents_UserPreferenceChanged;
- SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;
-
- // 取消订阅DPI变化事件
- var mainWindow = Application.Current.MainWindow as MainWindow;
- if (mainWindow != null)
- {
- mainWindow.DpiChanged -= MainWindow_DpiChanged;
- }
}
private void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)