improve:计时器窗口

This commit is contained in:
CJK_mkp
2025-11-02 11:12:13 +08:00
parent d2906476c8
commit 24b2bffe8e
@@ -28,6 +28,9 @@ namespace Ink_Canvas
this.Left = parent.Left;
this.Top = parent.Top;
// 根据分辨率和DPI缩放窗口
ScaleWindowForResolution();
// 启动更新定时器
updateTimer = new System.Timers.Timer(100); // 100ms更新一次
updateTimer.Elapsed += UpdateTimer_Elapsed;
@@ -39,6 +42,43 @@ namespace Ink_Canvas
ApplyTheme();
}
/// <summary>
/// 根据屏幕分辨率和 DPI 缩放窗口大小(保持原始尺寸,使用Transform缩放)
/// </summary>
private void ScaleWindowForResolution()
{
try
{
// 获取屏幕尺寸(考虑 DPI 缩放)
double screenWidth = SystemParameters.PrimaryScreenWidth;
double screenHeight = SystemParameters.PrimaryScreenHeight;
// 基准分辨率(1920x1080
const double baseWidth = 1920.0;
const double baseHeight = 1080.0;
// 计算缩放比例(使用较小的比例以保持比例)
double scaleX = screenWidth / baseWidth;
double scaleY = screenHeight / baseHeight;
double scale = Math.Min(scaleX, scaleY);
// 限制最小和最大缩放,避免过小或过大
scale = Math.Max(0.5, Math.Min(2.0, scale));
// 应用缩放变换到整个窗口内容
var scaleTransform = this.FindName("WindowScaleTransform") as ScaleTransform;
if (scaleTransform != null)
{
scaleTransform.ScaleX = scale;
scaleTransform.ScaleY = scale;
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"缩放窗口大小时出错: {ex.Message}");
}
}
private void UpdateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (parentWindow != null)