add:新设置

This commit is contained in:
2026-02-06 22:06:50 +08:00
parent b2648fecac
commit 22555b835b
11 changed files with 58 additions and 13 deletions
@@ -172,11 +172,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -1,5 +1,4 @@
using System;
using System;
using System.Windows;
using System.Windows.Controls;
using Ink_Canvas.Windows.SettingsViews;
@@ -97,12 +96,14 @@ namespace Ink_Canvas.Windows.SettingsViews
border.Background = isOn
? new SolidColorBrush(Color.FromRgb(0x35, 0x84, 0xE4))
: new SolidColorBrush(Color.FromRgb(0xE1, 0xE1, 0xE1));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(0xE1, 0xE1, 0xE1)));
var innerBorder = border.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
// 保持滑块为白色(主题切换时也更稳定)
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
catch (Exception ex)
@@ -184,11 +184,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -122,11 +122,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -169,11 +169,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -261,11 +261,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -182,11 +182,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -160,11 +160,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? System.Windows.HorizontalAlignment.Right : System.Windows.HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -222,11 +222,14 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn ? new SolidColorBrush(Color.FromRgb(53, 132, 228)) : new SolidColorBrush(Color.FromRgb(225, 225, 225));
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}
@@ -8,6 +8,35 @@ namespace Ink_Canvas.Windows.SettingsViews
/// </summary>
public static class ThemeHelper
{
private static bool IsToggleSwitchThumb(System.Windows.Controls.Border border)
{
try
{
if (border == null) return false;
// ToggleSwitch thumb 常见尺寸:19x19,圆角 10,父级为 48x25 的开关背景
if (border.Width < 16 || border.Width > 24 || border.Height < 16 || border.Height > 24)
return false;
if (border.CornerRadius.TopLeft < 8) return false;
if (border.Parent is System.Windows.Controls.Border parent)
{
if (parent.Width >= 40 && parent.Width <= 60 &&
parent.Height >= 20 && parent.Height <= 35 &&
parent.CornerRadius.TopLeft >= 10)
{
return true;
}
}
return false;
}
catch
{
return false;
}
}
/// <summary>
/// 检查当前是否为深色主题
/// </summary>
@@ -180,8 +209,12 @@ namespace Ink_Canvas.Windows.SettingsViews
}
else
{
// 其他白色背景(如搜索框)
border.Background = GetTextBoxBackgroundBrush();
// ToggleSwitch thumb 应保持白色,不参与主题背景替换
if (!IsToggleSwitchThumb(border))
{
// 其他白色背景(如搜索框)
border.Background = GetTextBoxBackgroundBrush();
}
}
}
else if (color.R == 250 && color.G == 250 && color.B == 250) // #fafafa - 主背景
@@ -230,11 +230,12 @@ namespace Ink_Canvas.Windows.SettingsViews
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
{
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
innerBorder.Background = new SolidColorBrush(Colors.White);
}
}