refactor(主题): 将主题相关逻辑提取到ThemeHelper类中
重构主题相关代码,将重复的IsSystemThemeLight方法和主题应用逻辑提取到新的ThemeHelper工具类中 简化多个窗口的主题处理代码,统一使用ThemeHelper进行主题管理
This commit is contained in:
@@ -0,0 +1,92 @@
|
|||||||
|
using iNKORE.UI.WPF.Modern;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace Ink_Canvas.Helpers
|
||||||
|
{
|
||||||
|
public static class ThemeHelper
|
||||||
|
{
|
||||||
|
public static bool IsSystemThemeLight()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var registryKey = Registry.CurrentUser;
|
||||||
|
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
||||||
|
if (themeKey != null)
|
||||||
|
{
|
||||||
|
var value = themeKey.GetValue("AppsUseLightTheme");
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
bool result = (int)value == 1;
|
||||||
|
themeKey.Close();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
themeKey.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsSystemThemeLightLegacy()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var registryKey = Registry.CurrentUser;
|
||||||
|
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
||||||
|
if (themeKey != null)
|
||||||
|
{
|
||||||
|
int keyValue = (int)themeKey.GetValue("SystemUsesLightTheme");
|
||||||
|
themeKey.Close();
|
||||||
|
return keyValue == 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine(ex);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ElementTheme GetEffectiveTheme(Settings settings)
|
||||||
|
{
|
||||||
|
if (settings.Appearance.Theme == 0)
|
||||||
|
return ElementTheme.Light;
|
||||||
|
if (settings.Appearance.Theme == 1)
|
||||||
|
return ElementTheme.Dark;
|
||||||
|
|
||||||
|
return IsSystemThemeLight() ? ElementTheme.Light : ElementTheme.Dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ApplyTheme(FrameworkElement element, Settings settings)
|
||||||
|
{
|
||||||
|
if (element == null || settings == null) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ThemeManager.SetRequestedTheme(element, GetEffectiveTheme(settings));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"应用主题失败: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ApplyTheme(FrameworkElement element, Settings settings, Action<string> onThemeApplied)
|
||||||
|
{
|
||||||
|
if (element == null || settings == null) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var theme = GetEffectiveTheme(settings);
|
||||||
|
ThemeManager.SetRequestedTheme(element, theme);
|
||||||
|
onThemeApplied?.Invoke(theme == ElementTheme.Dark ? "Dark" : "Light");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"应用主题失败: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2793,7 +2793,7 @@
|
|||||||
</ikw:SimpleStackPanel>
|
</ikw:SimpleStackPanel>
|
||||||
<!-- 快捷调色盘 - 双行显示模式 -->
|
<!-- 快捷调色盘 - 双行显示模式 -->
|
||||||
<ikw:SimpleStackPanel Name="QuickColorPalettePanel"
|
<ikw:SimpleStackPanel Name="QuickColorPalettePanel"
|
||||||
Visibility="Collapsed"
|
Visibility="Collapsed" d:Visibility="Visible"
|
||||||
Orientation="Vertical"
|
Orientation="Vertical"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Margin="4,0,4,0"
|
Margin="4,0,4,0"
|
||||||
@@ -2829,7 +2829,7 @@
|
|||||||
|
|
||||||
<!-- 快捷调色盘 - 单行显示模式 -->
|
<!-- 快捷调色盘 - 单行显示模式 -->
|
||||||
<ikw:SimpleStackPanel Name="QuickColorPaletteSingleRowPanel"
|
<ikw:SimpleStackPanel Name="QuickColorPaletteSingleRowPanel"
|
||||||
Visibility="Collapsed"
|
Visibility="Collapsed" d:Visibility="Visible"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Margin="4,0,4,0"
|
Margin="4,0,4,0"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using iNKORE.UI.WPF.Modern;
|
using iNKORE.UI.WPF.Modern;
|
||||||
|
using Ink_Canvas.Helpers;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -246,27 +247,11 @@ namespace Ink_Canvas
|
|||||||
SetTheme(ThemeDark);
|
SetTheme(ThemeDark);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetTheme(IsSystemThemeLight() ? ThemeLight : ThemeDark);
|
SetTheme(ThemeHelper.IsSystemThemeLightLegacy() ? ThemeLight : ThemeDark);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey("software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
int keyValue = (int)themeKey.GetValue("SystemUsesLightTheme");
|
|
||||||
return keyValue == 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AutoSwitchFloatingBarIconForTheme(string theme)
|
private void AutoSwitchFloatingBarIconForTheme(string theme)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -364,34 +364,14 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
ThemeHelper.ApplyTheme(this, settings, theme =>
|
||||||
{
|
{
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Light);
|
if (theme == "Dark") SetDarkThemeBorder();
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Dark);
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Light);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Dark);
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 刷新数字和冒号显示的颜色
|
|
||||||
if (parentControl != null)
|
if (parentControl != null)
|
||||||
{
|
{
|
||||||
UpdateTimeDisplay();
|
UpdateTimeDisplay();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -399,31 +379,6 @@ namespace Ink_Canvas.Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// 如果读取注册表失败,默认为浅色主题
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsLightTheme()
|
private bool IsLightTheme()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -69,37 +69,7 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
private void ApplyTheme(Settings settings)
|
private void ApplyTheme(Settings settings)
|
||||||
{
|
{
|
||||||
try
|
ThemeHelper.ApplyTheme(this, settings, ApplyThemeResources);
|
||||||
{
|
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
LogHelper.WriteLogToFile($"应用名单导入窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApplyThemeResources(string theme)
|
private void ApplyThemeResources(string theme)
|
||||||
@@ -133,29 +103,5 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// 如果无法读取注册表,默认使用浅色主题
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Ink_Canvas.Helpers;
|
using Ink_Canvas.Helpers;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -333,39 +333,11 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
private void ApplyTheme(Settings settings)
|
private void ApplyTheme(Settings settings)
|
||||||
{
|
{
|
||||||
try
|
ThemeHelper.ApplyTheme(this, settings, theme =>
|
||||||
{
|
{
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
ApplyThemeResources(theme);
|
||||||
{
|
if (theme == "Dark") SetDarkThemeBorder();
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
});
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
LogHelper.WriteLogToFile($"应用新点名UI窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -412,29 +384,6 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 点名模式逻辑
|
#region 点名模式逻辑
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Ink_Canvas.Helpers;
|
using Ink_Canvas.Helpers;
|
||||||
using iNKORE.UI.WPF.Modern;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
@@ -23,52 +22,16 @@ namespace Ink_Canvas
|
|||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 刷新主题
|
|
||||||
/// </summary>
|
|
||||||
public void RefreshTheme()
|
public void RefreshTheme()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 根据当前主题设置窗口主题
|
ThemeHelper.ApplyTheme(this, MainWindow.Settings);
|
||||||
bool isDarkTheme = MainWindow.Settings.Appearance.Theme == 1 ||
|
|
||||||
(MainWindow.Settings.Appearance.Theme == 2 && !IsSystemThemeLight());
|
|
||||||
|
|
||||||
if (isDarkTheme)
|
|
||||||
{
|
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Dark);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ThemeManager.SetRequestedTheme(this, ElementTheme.Light);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 强制刷新UI
|
|
||||||
InvalidateVisual();
|
InvalidateVisual();
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 检查系统主题是否为浅色
|
|
||||||
/// </summary>
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey =
|
|
||||||
registryKey.OpenSubKey("software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
|
|
||||||
var keyValue = 0;
|
|
||||||
if (themeKey != null) keyValue = (int)themeKey.GetValue("SystemUsesLightTheme");
|
|
||||||
if (keyValue == 1) light = true;
|
|
||||||
}
|
|
||||||
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
|
|
||||||
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1835,21 +1835,8 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool isDarkTheme = false;
|
bool isDarkTheme = settings.Appearance.Theme == 1 ||
|
||||||
|
(settings.Appearance.Theme == 2 && !ThemeHelper.IsSystemThemeLight());
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
|
||||||
{
|
|
||||||
isDarkTheme = false;
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
isDarkTheme = true;
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
isDarkTheme = !isSystemLight;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isDarkTheme)
|
if (isDarkTheme)
|
||||||
{
|
{
|
||||||
@@ -1884,31 +1871,6 @@ namespace Ink_Canvas.Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// 如果读取注册表失败,默认为浅色主题
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 公开方法
|
#region 公开方法
|
||||||
|
|||||||
@@ -819,21 +819,8 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool isDarkTheme = false;
|
bool isDarkTheme = settings.Appearance.Theme == 1 ||
|
||||||
|
(settings.Appearance.Theme == 2 && !ThemeHelper.IsSystemThemeLight());
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
|
||||||
{
|
|
||||||
isDarkTheme = false;
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
isDarkTheme = true;
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
isDarkTheme = !isSystemLight;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isDarkTheme)
|
if (isDarkTheme)
|
||||||
{
|
{
|
||||||
@@ -864,31 +851,6 @@ namespace Ink_Canvas.Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// 如果读取注册表失败,默认为浅色主题
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取当前倒计时状态
|
/// 获取当前倒计时状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -79,60 +79,16 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
private void ApplyTheme(Settings settings)
|
private void ApplyTheme(Settings settings)
|
||||||
{
|
{
|
||||||
try
|
ThemeHelper.ApplyTheme(this, settings, theme =>
|
||||||
{
|
{
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据主题设置窗口背景
|
|
||||||
if (settings.RandSettings.SelectedBackgroundIndex <= 0)
|
if (settings.RandSettings.SelectedBackgroundIndex <= 0)
|
||||||
{
|
{
|
||||||
// 没有自定义背景时,使用主题背景色
|
|
||||||
if (Application.Current.FindResource("RandWindowBackground") is SolidColorBrush backgroundBrush)
|
if (Application.Current.FindResource("RandWindowBackground") is SolidColorBrush backgroundBrush)
|
||||||
{
|
{
|
||||||
MainBorder.Background = backgroundBrush;
|
MainBorder.Background = backgroundBrush;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
LogHelper.WriteLogToFile($"应用点名窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey =
|
|
||||||
registryKey.OpenSubKey("software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
|
|
||||||
var keyValue = 0;
|
|
||||||
if (themeKey != null) keyValue = (int)themeKey.GetValue("SystemUsesLightTheme");
|
|
||||||
if (keyValue == 1) light = true;
|
|
||||||
}
|
|
||||||
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
|
|
||||||
|
|
||||||
return light;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public RandWindow(Settings settings, bool IsAutoClose)
|
public RandWindow(Settings settings, bool IsAutoClose)
|
||||||
|
|||||||
@@ -145,37 +145,7 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
private void ApplyTheme(Settings settings)
|
private void ApplyTheme(Settings settings)
|
||||||
{
|
{
|
||||||
try
|
ThemeHelper.ApplyTheme(this, settings, ApplyThemeResources);
|
||||||
{
|
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
ApplyThemeResources("Light");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
ApplyThemeResources("Dark");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
LogHelper.WriteLogToFile($"应用历史记录窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApplyThemeResources(string theme)
|
private void ApplyThemeResources(string theme)
|
||||||
@@ -209,29 +179,6 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -346,63 +346,11 @@ namespace Ink_Canvas.Windows
|
|||||||
|
|
||||||
private void ApplyTheme(Settings settings)
|
private void ApplyTheme(Settings settings)
|
||||||
{
|
{
|
||||||
try
|
ThemeHelper.ApplyTheme(this, settings, theme =>
|
||||||
{
|
{
|
||||||
if (settings.Appearance.Theme == 0) // 浅色主题
|
if (theme == "Dark") SetDarkThemeBorder();
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
}
|
|
||||||
else if (settings.Appearance.Theme == 1) // 深色主题
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
else // 跟随系统主题
|
|
||||||
{
|
|
||||||
bool isSystemLight = IsSystemThemeLight();
|
|
||||||
if (isSystemLight)
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Light);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, iNKORE.UI.WPF.Modern.ElementTheme.Dark);
|
|
||||||
SetDarkThemeBorder();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 刷新数字和冒号显示的颜色
|
|
||||||
UpdateDigitDisplays();
|
UpdateDigitDisplays();
|
||||||
}
|
});
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
LogHelper.WriteLogToFile($"应用新计时器UI倒计时窗口主题出错: {ex.Message}", LogHelper.LogType.Error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsSystemThemeLight()
|
|
||||||
{
|
|
||||||
var light = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var registryKey = Microsoft.Win32.Registry.CurrentUser;
|
|
||||||
var themeKey = registryKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
|
|
||||||
if (themeKey != null)
|
|
||||||
{
|
|
||||||
var value = themeKey.GetValue("AppsUseLightTheme");
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
light = (int)value == 1;
|
|
||||||
}
|
|
||||||
themeKey.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// 如果读取注册表失败,默认为浅色主题
|
|
||||||
light = true;
|
|
||||||
}
|
|
||||||
return light;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateDigitDisplays()
|
private void UpdateDigitDisplays()
|
||||||
|
|||||||
Reference in New Issue
Block a user