add:新设置
This commit is contained in:
@@ -77,7 +77,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="笔尖模式的接触面积区分界限" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="笔尖模式的接触面积区分界限" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="NibModeBoundsWidthSlider" Width="150" Minimum="1" Maximum="50" Value="5" TickFrequency="1" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="NibModeBoundsWidthSlider" Width="150" Minimum="1" Maximum="50" Value="5" TickFrequency="1" IsSnapToTickEnabled="True" ValueChanged="NibModeBoundsWidthSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="NibModeBoundsWidthText" Text="5" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="NibModeBoundsWidthText" Text="5" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="手指模式的接触面积区分界限" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="手指模式的接触面积区分界限" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="FingerModeBoundsWidthSlider" Width="150" Minimum="1" Maximum="50" Value="20" TickFrequency="1" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="FingerModeBoundsWidthSlider" Width="150" Minimum="1" Maximum="50" Value="20" TickFrequency="1" IsSnapToTickEnabled="True" ValueChanged="FingerModeBoundsWidthSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="FingerModeBoundsWidthText" Text="20" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="FingerModeBoundsWidthText" Text="20" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -161,7 +161,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调整浮动工具栏的大小" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调整浮动工具栏的大小" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="ViewboxFloatingBarScaleTransformValueSlider" Width="150" Minimum="0.5" Maximum="1.25" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="ViewboxFloatingBarScaleTransformValueSlider" Width="150" Minimum="0.5" Maximum="1.25" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True" ValueChanged="ViewboxFloatingBarScaleTransformValueSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="ViewboxFloatingBarScaleTransformValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="ViewboxFloatingBarScaleTransformValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调整浮动工具栏的透明度" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调整浮动工具栏的透明度" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="ViewboxFloatingBarOpacityValueSlider" Width="150" Minimum="0.3" Maximum="1" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="ViewboxFloatingBarOpacityValueSlider" Width="150" Minimum="0.3" Maximum="1" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True" ValueChanged="ViewboxFloatingBarOpacityValueSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="ViewboxFloatingBarOpacityValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="ViewboxFloatingBarOpacityValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="在PPT模式下浮动工具栏的透明度(重新进入PPT放映后生效)" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="在PPT模式下浮动工具栏的透明度(重新进入PPT放映后生效)" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="ViewboxFloatingBarOpacityInPPTValueSlider" Width="150" Minimum="0.3" Maximum="1" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="ViewboxFloatingBarOpacityInPPTValueSlider" Width="150" Minimum="0.3" Maximum="1" Value="1" TickFrequency="0.05" IsSnapToTickEnabled="True" ValueChanged="ViewboxFloatingBarOpacityInPPTValueSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="ViewboxFloatingBarOpacityInPPTValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="ViewboxFloatingBarOpacityInPPTValueText" Text="1.00" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -9,9 +9,75 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class AppearancePanel : UserControl
|
public partial class AppearancePanel : UserControl
|
||||||
{
|
{
|
||||||
|
private bool _isLoaded = false;
|
||||||
|
|
||||||
public AppearancePanel()
|
public AppearancePanel()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
Loaded += AppearancePanel_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppearancePanel_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LoadSettings();
|
||||||
|
// 添加触摸支持
|
||||||
|
MainWindowSettingsHelper.EnableTouchSupportForControls(this);
|
||||||
|
// 应用主题
|
||||||
|
ApplyTheme();
|
||||||
|
_isLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加载设置
|
||||||
|
/// </summary>
|
||||||
|
public void LoadSettings()
|
||||||
|
{
|
||||||
|
if (MainWindow.Settings == null || MainWindow.Settings.Appearance == null) return;
|
||||||
|
|
||||||
|
_isLoaded = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var appearance = MainWindow.Settings.Appearance;
|
||||||
|
|
||||||
|
// 浮动工具栏缩放
|
||||||
|
if (ViewboxFloatingBarScaleTransformValueSlider != null)
|
||||||
|
{
|
||||||
|
double val = appearance.ViewboxFloatingBarScaleTransformValue;
|
||||||
|
if (val == 0) val = 1.0;
|
||||||
|
ViewboxFloatingBarScaleTransformValueSlider.Value = val;
|
||||||
|
if (ViewboxFloatingBarScaleTransformValueText != null)
|
||||||
|
{
|
||||||
|
ViewboxFloatingBarScaleTransformValueText.Text = val.ToString("F2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 浮动工具栏透明度
|
||||||
|
if (ViewboxFloatingBarOpacityValueSlider != null)
|
||||||
|
{
|
||||||
|
ViewboxFloatingBarOpacityValueSlider.Value = appearance.ViewboxFloatingBarOpacityValue;
|
||||||
|
if (ViewboxFloatingBarOpacityValueText != null)
|
||||||
|
{
|
||||||
|
ViewboxFloatingBarOpacityValueText.Text = appearance.ViewboxFloatingBarOpacityValue.ToString("F2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 浮栏在PPT下透明度
|
||||||
|
if (ViewboxFloatingBarOpacityInPPTValueSlider != null)
|
||||||
|
{
|
||||||
|
ViewboxFloatingBarOpacityInPPTValueSlider.Value = appearance.ViewboxFloatingBarOpacityInPPTValue;
|
||||||
|
if (ViewboxFloatingBarOpacityInPPTValueText != null)
|
||||||
|
{
|
||||||
|
ViewboxFloatingBarOpacityInPPTValueText.Text = appearance.ViewboxFloatingBarOpacityInPPTValue.ToString("F2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"加载外观设置时出错: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
_isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
||||||
@@ -44,5 +110,41 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
System.Diagnostics.Debug.WriteLine($"AppearancePanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"AppearancePanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Slider值变化事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void ViewboxFloatingBarScaleTransformValueSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (ViewboxFloatingBarScaleTransformValueSlider != null && ViewboxFloatingBarScaleTransformValueText != null)
|
||||||
|
{
|
||||||
|
double val = ViewboxFloatingBarScaleTransformValueSlider.Value;
|
||||||
|
ViewboxFloatingBarScaleTransformValueText.Text = val.ToString("F2");
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("ViewboxFloatingBarScaleTransformValueSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ViewboxFloatingBarOpacityValueSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (ViewboxFloatingBarOpacityValueSlider != null && ViewboxFloatingBarOpacityValueText != null)
|
||||||
|
{
|
||||||
|
double val = ViewboxFloatingBarOpacityValueSlider.Value;
|
||||||
|
ViewboxFloatingBarOpacityValueText.Text = val.ToString("F2");
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("ViewboxFloatingBarOpacityValueSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ViewboxFloatingBarOpacityInPPTValueSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (ViewboxFloatingBarOpacityInPPTValueSlider != null && ViewboxFloatingBarOpacityInPPTValueText != null)
|
||||||
|
{
|
||||||
|
double val = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
|
||||||
|
ViewboxFloatingBarOpacityInPPTValueText.Text = val.ToString("F2");
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("ViewboxFloatingBarOpacityInPPTValueSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,8 +288,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/PPTTools.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/PPTTools.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀希沃"PPT 小工具"" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀希沃"PPT 小工具"" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillPptService" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillPptService" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -304,8 +304,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/EasiNote.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/EasiNote.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 希沃白板5" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 希沃白板5" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillEasiNote" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillEasiNote" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -318,8 +318,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/HiteAnnotation.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/HiteAnnotation.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 鸿合屏幕书写" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 鸿合屏幕书写" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillHiteAnnotation" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillHiteAnnotation" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -332,8 +332,8 @@
|
|||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="鸿合屏幕书写查杀后自动进入批注" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="鸿合屏幕书写查杀后自动进入批注" HorizontalAlignment="Left"/>
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="查杀鸿合屏幕书写后自动进入批注模式" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="查杀鸿合屏幕书写后自动进入批注模式" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoEnterAnnotationAfterKillHite" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1">
|
<Border x:Name="ToggleSwitchAutoEnterAnnotationAfterKillHite" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -346,8 +346,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/VComYouJiao.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/VComYouJiao.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 优教授课端" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 优教授课端" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillVComYouJiao" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillVComYouJiao" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -360,8 +360,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/Seewo2Annotation.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/Seewo2Annotation.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 希沃桌面2.0 桌面批注" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 希沃桌面2.0 桌面批注" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -377,8 +377,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/InkCanvas.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/InkCanvas.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 Ink Canvas 和 IC+" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 Ink Canvas 和 IC+" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillInkCanvas" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillInkCanvas" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -391,8 +391,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/ica.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/ica.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀ICA(新版旧版通杀)" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀ICA(新版旧版通杀)" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillICA" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillICA" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
@@ -405,8 +405,8 @@
|
|||||||
<Image Source="/Resources/Icons-png/idt.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
<Image Source="/Resources/Icons-png/idt.png" Margin="0,0,6,0" Width="28" Height="28" VerticalAlignment="Center"/>
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 智绘教Inkeys(仅限新版)" VerticalAlignment="Center"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="自动查杀 智绘教Inkeys(仅限新版)" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border x:Name="ToggleSwitchAutoKillIDT" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4">
|
<Border x:Name="ToggleSwitchAutoKillIDT" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
<Border.Effect>
|
<Border.Effect>
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
</Border.Effect>
|
</Border.Effect>
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
|
using Ink_Canvas;
|
||||||
|
using iNKORE.UI.WPF.Helpers;
|
||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using Ink_Canvas.Windows.SettingsViews;
|
using System.Windows.Media;
|
||||||
|
using Application = System.Windows.Application;
|
||||||
|
|
||||||
namespace Ink_Canvas.Windows.SettingsViews
|
namespace Ink_Canvas.Windows.SettingsViews
|
||||||
{
|
{
|
||||||
@@ -31,71 +34,82 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加载设置
|
/// 加载设置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void LoadSettings()
|
public void LoadSettings()
|
||||||
{
|
{
|
||||||
try
|
if (MainWindow.Settings == null || MainWindow.Settings.Automation == null)
|
||||||
{
|
{
|
||||||
if (MainWindow.Settings == null || MainWindow.Settings.Automation == null) return;
|
_isLoaded = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_isLoaded = false;
|
_isLoaded = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
var automation = MainWindow.Settings.Automation;
|
var automation = MainWindow.Settings.Automation;
|
||||||
|
|
||||||
// 设置所有 ToggleSwitch 的状态
|
// 设置所有 ToggleSwitch 的状态
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiNote", automation.IsAutoFoldInEasiNote);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiNote"), automation.IsAutoFoldInEasiNote);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiCamera", automation.IsAutoFoldInEasiCamera);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiCamera"), automation.IsAutoFoldInEasiCamera);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInHiteTouchPro", automation.IsAutoFoldInHiteTouchPro);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInHiteTouchPro"), automation.IsAutoFoldInHiteTouchPro);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiNote3", automation.IsAutoFoldInEasiNote3);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiNote3"), automation.IsAutoFoldInEasiNote3);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiNote3C", automation.IsAutoFoldInEasiNote3C);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiNote3C"), automation.IsAutoFoldInEasiNote3C);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiNote5C", automation.IsAutoFoldInEasiNote5C);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiNote5C"), automation.IsAutoFoldInEasiNote5C);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInSeewoPincoTeacher", automation.IsAutoFoldInSeewoPincoTeacher);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInSeewoPincoTeacher"), automation.IsAutoFoldInSeewoPincoTeacher);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInHiteCamera", automation.IsAutoFoldInHiteCamera);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInHiteCamera"), automation.IsAutoFoldInHiteCamera);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInHiteLightBoard", automation.IsAutoFoldInHiteLightBoard);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInHiteLightBoard"), automation.IsAutoFoldInHiteLightBoard);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInWxBoardMain", automation.IsAutoFoldInWxBoardMain);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInWxBoardMain"), automation.IsAutoFoldInWxBoardMain);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInMSWhiteboard", automation.IsAutoFoldInMSWhiteboard);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInMSWhiteboard"), automation.IsAutoFoldInMSWhiteboard);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInAdmoxWhiteboard", automation.IsAutoFoldInAdmoxWhiteboard);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInAdmoxWhiteboard"), automation.IsAutoFoldInAdmoxWhiteboard);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInAdmoxBooth", automation.IsAutoFoldInAdmoxBooth);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInAdmoxBooth"), automation.IsAutoFoldInAdmoxBooth);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInQPoint", automation.IsAutoFoldInQPoint);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInQPoint"), automation.IsAutoFoldInQPoint);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInYiYunVisualPresenter", automation.IsAutoFoldInYiYunVisualPresenter);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInYiYunVisualPresenter"), automation.IsAutoFoldInYiYunVisualPresenter);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInMaxHubWhiteboard", automation.IsAutoFoldInMaxHubWhiteboard);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInMaxHubWhiteboard"), automation.IsAutoFoldInMaxHubWhiteboard);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInPPTSlideShow", automation.IsAutoFoldInPPTSlideShow);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInPPTSlideShow"), automation.IsAutoFoldInPPTSlideShow);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno", automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno"), automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno);
|
||||||
SetToggleSwitchState("ToggleSwitchAutoFoldInOldZyBoard", automation.IsAutoFoldInOldZyBoard);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoFoldInOldZyBoard"), automation.IsAutoFoldInOldZyBoard);
|
||||||
SetToggleSwitchState("ToggleSwitchKeepFoldAfterSoftwareExit", automation.KeepFoldAfterSoftwareExit);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchKeepFoldAfterSoftwareExit"), automation.KeepFoldAfterSoftwareExit);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillPptService"), automation.IsAutoKillPptService);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillEasiNote"), automation.IsAutoKillEasiNote);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillHiteAnnotation"), automation.IsAutoKillHiteAnnotation);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoEnterAnnotationAfterKillHite"), automation.IsAutoEnterAnnotationAfterKillHite);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillVComYouJiao"), automation.IsAutoKillVComYouJiao);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation"), automation.IsAutoKillSeewoLauncher2DesktopAnnotation);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillInkCanvas"), automation.IsAutoKillInkCanvas);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillICA"), automation.IsAutoKillICA);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoKillIDT"), automation.IsAutoKillIDT);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"AutomationPanel 加载设置时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"AutomationPanel 加载设置时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_isLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找ToggleSwitch控件
|
||||||
|
/// </summary>
|
||||||
|
private Border FindToggleSwitch(string name)
|
||||||
|
{
|
||||||
|
return this.FindDescendantByName(name) as Border;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置 ToggleSwitch 状态
|
/// 设置 ToggleSwitch 状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void SetToggleSwitchState(string name, bool isOn)
|
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
|
||||||
{
|
{
|
||||||
try
|
if (toggleSwitch == null) return;
|
||||||
{
|
toggleSwitch.Background = isOn
|
||||||
var border = FindName(name) as System.Windows.Controls.Border;
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
if (border != null)
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
{
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
bool currentState = border.Background.ToString().Contains("3584e4");
|
|
||||||
if (currentState != isOn)
|
|
||||||
{
|
|
||||||
border.Background = isOn ? new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(0x35, 0x84, 0xe4)) : new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(0xe1, 0xe1, 0xe1));
|
|
||||||
var innerBorder = border.Child as System.Windows.Controls.Border;
|
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
|
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Debug.WriteLine($"AutomationPanel 设置 ToggleSwitch {name} 状态时出错: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ToggleSwitch 点击事件处理
|
/// ToggleSwitch 点击事件处理
|
||||||
@@ -104,12 +118,15 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
{
|
{
|
||||||
if (!_isLoaded) return;
|
if (!_isLoaded) return;
|
||||||
|
|
||||||
var border = sender as System.Windows.Controls.Border;
|
// 标记事件已处理,防止事件冒泡
|
||||||
|
e.Handled = true;
|
||||||
|
|
||||||
|
var border = sender as Border;
|
||||||
if (border == null) return;
|
if (border == null) return;
|
||||||
|
|
||||||
bool currentState = border.Background.ToString().Contains("3584e4");
|
bool isOn = border.Background.ToString() == "#FF3584E4";
|
||||||
bool newState = !currentState;
|
bool newState = !isOn;
|
||||||
SetToggleSwitchState(border.Name, newState);
|
SetToggleSwitchState(border, newState);
|
||||||
|
|
||||||
// 通过 MainWindowSettingsHelper 调用 MainWindow 中的方法
|
// 通过 MainWindowSettingsHelper 调用 MainWindow 中的方法
|
||||||
string toggleSwitchName = border.Name;
|
string toggleSwitchName = border.Name;
|
||||||
|
|||||||
@@ -177,78 +177,6 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Border Height="1" Background="#ebebeb"/>
|
|
||||||
<Grid Height="54">
|
|
||||||
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="绘制圆时显示圆心位置" HorizontalAlignment="Left"/>
|
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="绘制圆形时显示圆心标记" HorizontalAlignment="Left"/>
|
|
||||||
</StackPanel>
|
|
||||||
<Border x:Name="ToggleSwitchShowCircleCenter" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" Tag="ShowCircleCenter" MouseLeftButtonDown="ToggleSwitch_Click">
|
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
|
||||||
<Border.Effect>
|
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
|
||||||
</Border.Effect>
|
|
||||||
</Border>
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
|
||||||
<Border Height="1" Background="#ebebeb"/>
|
|
||||||
<Grid Height="54">
|
|
||||||
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="使用WPF默认贝塞尔曲线平滑" HorizontalAlignment="Left"/>
|
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="使用WPF内置的曲线平滑算法" HorizontalAlignment="Left"/>
|
|
||||||
</StackPanel>
|
|
||||||
<Border x:Name="ToggleSwitchFitToCurve" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1" Tag="FitToCurve" MouseLeftButtonDown="ToggleSwitch_Click">
|
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center">
|
|
||||||
<Border.Effect>
|
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
|
||||||
</Border.Effect>
|
|
||||||
</Border>
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
|
||||||
<Border Height="1" Background="#ebebeb"/>
|
|
||||||
<Grid Height="54">
|
|
||||||
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="使用高级曲线平滑(推荐)" HorizontalAlignment="Left"/>
|
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="使用改进的贝塞尔曲线平滑算法,提供更好的绘制效果" HorizontalAlignment="Left"/>
|
|
||||||
</StackPanel>
|
|
||||||
<Border x:Name="ToggleSwitchAdvancedBezierSmoothing" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" Tag="AdvancedBezierSmoothing" MouseLeftButtonDown="ToggleSwitch_Click">
|
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center">
|
|
||||||
<Border.Effect>
|
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
|
||||||
</Border.Effect>
|
|
||||||
</Border>
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
|
||||||
</StackPanel>
|
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- 墨迹渐隐设置 -->
|
|
||||||
<Border Margin="0,25,0,0" BorderBrush="#e6e6e6" BorderThickness="1.25,1.25,1.25,4" CornerRadius="8">
|
|
||||||
<StackPanel Orientation="Vertical">
|
|
||||||
<Grid Height="54">
|
|
||||||
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="启用墨迹渐隐功能" HorizontalAlignment="Left"/>
|
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="开启后墨迹不会绘制到画布上,而是保持湿墨迹状态,根据设置的渐隐时间自动消失" HorizontalAlignment="Left"/>
|
|
||||||
</StackPanel>
|
|
||||||
<Border x:Name="ToggleSwitchEnableInkFade" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1" Tag="EnableInkFade" MouseLeftButtonDown="ToggleSwitch_Click">
|
|
||||||
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center">
|
|
||||||
<Border.Effect>
|
|
||||||
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
|
||||||
</Border.Effect>
|
|
||||||
</Border>
|
|
||||||
</Border>
|
|
||||||
</Grid>
|
|
||||||
<Border Height="1" Background="#ebebeb"/>
|
|
||||||
<Grid Height="54" x:Name="InkFadeTimePanel" Visibility="Collapsed">
|
|
||||||
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="墨迹渐隐时间" HorizontalAlignment="Left"/>
|
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置墨迹从绘制到完全消失的时间" HorizontalAlignment="Left"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
|
||||||
<Slider x:Name="InkFadeTimeSlider" Width="150" Minimum="1000" Maximum="10000" Value="3000" TickFrequency="1000" IsSnapToTickEnabled="True" ValueChanged="InkFadeTimeSlider_ValueChanged"/>
|
|
||||||
<TextBlock x:Name="InkFadeTimeText" Text="3000ms" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
|
|||||||
@@ -108,15 +108,6 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
// 保留双曲线渐近线
|
// 保留双曲线渐近线
|
||||||
SetOptionButtonState("HyperbolaAsymptote", (int)canvas.HyperbolaAsymptoteOption);
|
SetOptionButtonState("HyperbolaAsymptote", (int)canvas.HyperbolaAsymptoteOption);
|
||||||
|
|
||||||
// 绘制圆时显示圆心位置
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchShowCircleCenter"), canvas.ShowCircleCenter);
|
|
||||||
|
|
||||||
// 使用WPF默认贝塞尔曲线平滑
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchFitToCurve"), canvas.FitToCurve && !canvas.UseAdvancedBezierSmoothing);
|
|
||||||
|
|
||||||
// 使用高级贝塞尔曲线平滑
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAdvancedBezierSmoothing"), canvas.UseAdvancedBezierSmoothing);
|
|
||||||
|
|
||||||
// 启用异步墨迹平滑
|
// 启用异步墨迹平滑
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchUseAsyncInkSmoothing"), canvas.UseAsyncInkSmoothing);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchUseAsyncInkSmoothing"), canvas.UseAsyncInkSmoothing);
|
||||||
|
|
||||||
@@ -132,17 +123,6 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
// 启用直线端点吸附
|
// 启用直线端点吸附
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchLineEndpointSnapping"), canvas.LineEndpointSnapping);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchLineEndpointSnapping"), canvas.LineEndpointSnapping);
|
||||||
|
|
||||||
// 启用墨迹渐隐功能
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchEnableInkFade"), canvas.EnableInkFade);
|
|
||||||
if (InkFadeTimePanel != null)
|
|
||||||
{
|
|
||||||
InkFadeTimePanel.Visibility = canvas.EnableInkFade ? Visibility.Visible : Visibility.Collapsed;
|
|
||||||
}
|
|
||||||
if (InkFadeTimeSlider != null)
|
|
||||||
{
|
|
||||||
InkFadeTimeSlider.Value = canvas.InkFadeTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定时自动保存墨迹
|
// 定时自动保存墨迹
|
||||||
// 注意:这个设置可能在 Automation 或 Canvas 中,需要根据实际情况调整
|
// 注意:这个设置可能在 Automation 或 Canvas 中,需要根据实际情况调整
|
||||||
// SetToggleSwitchState(FindToggleSwitch("ToggleSwitchEnableAutoSaveStrokes"), ...);
|
// SetToggleSwitchState(FindToggleSwitch("ToggleSwitchEnableAutoSaveStrokes"), ...);
|
||||||
@@ -184,7 +164,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
@@ -298,33 +278,6 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchCompressPicturesUploaded", newState);
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchCompressPicturesUploaded", newState);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ShowCircleCenter":
|
|
||||||
// 调用 MainWindow 中的方法
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchShowCircleCenter", newState);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "FitToCurve":
|
|
||||||
// 调用 MainWindow 中的方法
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchFitToCurve", newState);
|
|
||||||
// 处理互斥逻辑
|
|
||||||
if (newState)
|
|
||||||
{
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAdvancedBezierSmoothing", false);
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAdvancedBezierSmoothing"), false);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "AdvancedBezierSmoothing":
|
|
||||||
// 调用 MainWindow 中的方法
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAdvancedBezierSmoothing", newState);
|
|
||||||
// 处理互斥逻辑
|
|
||||||
if (newState)
|
|
||||||
{
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchFitToCurve", false);
|
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchFitToCurve"), false);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "UseAsyncInkSmoothing":
|
case "UseAsyncInkSmoothing":
|
||||||
// 调用 MainWindow 中的方法
|
// 调用 MainWindow 中的方法
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAsyncInkSmoothing", newState);
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAsyncInkSmoothing", newState);
|
||||||
@@ -350,16 +303,6 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchLineEndpointSnapping", newState);
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchLineEndpointSnapping", newState);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "EnableInkFade":
|
|
||||||
// 调用 MainWindow 中的方法
|
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchEnableInkFade", newState);
|
|
||||||
// 更新UI状态
|
|
||||||
if (InkFadeTimePanel != null)
|
|
||||||
{
|
|
||||||
InkFadeTimePanel.Visibility = newState ? Visibility.Visible : Visibility.Collapsed;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "EnableAutoSaveStrokes":
|
case "EnableAutoSaveStrokes":
|
||||||
// 调用 MainWindow 中的方法
|
// 调用 MainWindow 中的方法
|
||||||
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchEnableAutoSaveStrokes", newState);
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchEnableAutoSaveStrokes", newState);
|
||||||
@@ -576,17 +519,6 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Slider值变化事件处理
|
/// Slider值变化事件处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InkFadeTimeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
|
||||||
{
|
|
||||||
if (!_isLoaded) return;
|
|
||||||
if (InkFadeTimeSlider != null && InkFadeTimeText != null)
|
|
||||||
{
|
|
||||||
double value = InkFadeTimeSlider.Value;
|
|
||||||
InkFadeTimeText.Text = $"{(int)value}ms";
|
|
||||||
// 调用 MainWindow 中的方法
|
|
||||||
MainWindowSettingsHelper.InvokeSliderValueChanged("InkFadeTimeSlider", value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 应用主题
|
/// 应用主题
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -125,7 +125,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="设置直线自动拉直的最小长度" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="设置直线自动拉直的最小长度" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="AutoStraightenLineThresholdSlider" Width="150" Minimum="30" Maximum="300" Value="80" TickFrequency="30" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="AutoStraightenLineThresholdSlider" Width="150" Minimum="30" Maximum="300" Value="80" TickFrequency="30" IsSnapToTickEnabled="True" ValueChanged="AutoStraightenLineThresholdSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="AutoStraightenLineThresholdText" Text="80" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="AutoStraightenLineThresholdText" Text="80" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="越小要求越严格,越弯曲的线条越不容易被拉直;值越大越容易识别为直线" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="越小要求越严格,越弯曲的线条越不容易被拉直;值越大越容易识别为直线" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="LineStraightenSensitivitySlider" Width="150" Minimum="0.05" Maximum="2.0" Value="0.20" TickFrequency="0.05" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="LineStraightenSensitivitySlider" Width="150" Minimum="0.05" Maximum="2.0" Value="0.20" TickFrequency="0.05" IsSnapToTickEnabled="True" ValueChanged="LineStraightenSensitivitySlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="LineStraightenSensitivityText" Text="0.20" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="LineStraightenSensitivityText" Text="0.20" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="设置直线端点自动吸附的最大距离" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="设置直线端点自动吸附的最大距离" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="LineEndpointSnappingThresholdSlider" Width="150" Minimum="5" Maximum="50" Value="15" TickFrequency="5" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="LineEndpointSnappingThresholdSlider" Width="150" Minimum="5" Maximum="50" Value="15" TickFrequency="5" IsSnapToTickEnabled="True" ValueChanged="LineEndpointSnappingThresholdSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="LineEndpointSnappingThresholdText" Text="15" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
<TextBlock x:Name="LineEndpointSnappingThresholdText" Text="15" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using Ink_Canvas;
|
||||||
|
using iNKORE.UI.WPF.Helpers;
|
||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
@@ -9,9 +11,104 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class InkRecognitionPanel : UserControl
|
public partial class InkRecognitionPanel : UserControl
|
||||||
{
|
{
|
||||||
|
private bool _isLoaded = false;
|
||||||
|
|
||||||
public InkRecognitionPanel()
|
public InkRecognitionPanel()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
Loaded += InkRecognitionPanel_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InkRecognitionPanel_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LoadSettings();
|
||||||
|
// 添加触摸支持
|
||||||
|
MainWindowSettingsHelper.EnableTouchSupportForControls(this);
|
||||||
|
// 应用主题
|
||||||
|
ApplyTheme();
|
||||||
|
_isLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加载设置
|
||||||
|
/// </summary>
|
||||||
|
public void LoadSettings()
|
||||||
|
{
|
||||||
|
if (MainWindow.Settings == null || MainWindow.Settings.Canvas == null || MainWindow.Settings.InkToShape == null) return;
|
||||||
|
|
||||||
|
_isLoaded = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var canvas = MainWindow.Settings.Canvas;
|
||||||
|
var inkToShape = MainWindow.Settings.InkToShape;
|
||||||
|
|
||||||
|
// 自动拉直线阈值
|
||||||
|
if (AutoStraightenLineThresholdSlider != null)
|
||||||
|
{
|
||||||
|
AutoStraightenLineThresholdSlider.Value = canvas.AutoStraightenLineThreshold;
|
||||||
|
if (AutoStraightenLineThresholdText != null)
|
||||||
|
{
|
||||||
|
AutoStraightenLineThresholdText.Text = ((int)canvas.AutoStraightenLineThreshold).ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 灵敏度
|
||||||
|
if (LineStraightenSensitivitySlider != null)
|
||||||
|
{
|
||||||
|
LineStraightenSensitivitySlider.Value = inkToShape.LineStraightenSensitivity;
|
||||||
|
if (LineStraightenSensitivityText != null)
|
||||||
|
{
|
||||||
|
LineStraightenSensitivityText.Text = inkToShape.LineStraightenSensitivity.ToString("F2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 高精度直线拉直
|
||||||
|
var toggleSwitchHighPrecisionLineStraighten = this.FindDescendantByName("ToggleSwitchHighPrecisionLineStraighten") as Border;
|
||||||
|
if (toggleSwitchHighPrecisionLineStraighten != null)
|
||||||
|
{
|
||||||
|
bool isOn = canvas.HighPrecisionLineStraighten;
|
||||||
|
toggleSwitchHighPrecisionLineStraighten.Background = isOn
|
||||||
|
? new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(53, 132, 228))
|
||||||
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
|
var innerBorder = toggleSwitchHighPrecisionLineStraighten.Child as Border;
|
||||||
|
if (innerBorder != null)
|
||||||
|
{
|
||||||
|
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 直线端点吸附
|
||||||
|
var toggleSwitchLineEndpointSnapping = this.FindDescendantByName("ToggleSwitchLineEndpointSnapping") as Border;
|
||||||
|
if (toggleSwitchLineEndpointSnapping != null)
|
||||||
|
{
|
||||||
|
bool isOn = canvas.LineEndpointSnapping;
|
||||||
|
toggleSwitchLineEndpointSnapping.Background = isOn
|
||||||
|
? new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(53, 132, 228))
|
||||||
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
|
var innerBorder = toggleSwitchLineEndpointSnapping.Child as Border;
|
||||||
|
if (innerBorder != null)
|
||||||
|
{
|
||||||
|
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 吸附距离
|
||||||
|
if (LineEndpointSnappingThresholdSlider != null)
|
||||||
|
{
|
||||||
|
LineEndpointSnappingThresholdSlider.Value = canvas.LineEndpointSnappingThreshold;
|
||||||
|
if (LineEndpointSnappingThresholdText != null)
|
||||||
|
{
|
||||||
|
LineEndpointSnappingThresholdText.Text = ((int)canvas.LineEndpointSnappingThreshold).ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"加载墨迹识别设置时出错: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
_isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
||||||
@@ -44,6 +141,42 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
System.Diagnostics.Debug.WriteLine($"InkRecognitionPanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"InkRecognitionPanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Slider值变化事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void AutoStraightenLineThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (AutoStraightenLineThresholdSlider != null && AutoStraightenLineThresholdText != null)
|
||||||
|
{
|
||||||
|
double val = AutoStraightenLineThresholdSlider.Value;
|
||||||
|
AutoStraightenLineThresholdText.Text = ((int)val).ToString();
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("AutoStraightenLineThresholdSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LineStraightenSensitivitySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (LineStraightenSensitivitySlider != null && LineStraightenSensitivityText != null)
|
||||||
|
{
|
||||||
|
double val = LineStraightenSensitivitySlider.Value;
|
||||||
|
LineStraightenSensitivityText.Text = val.ToString("F2");
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("LineStraightenSensitivitySlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LineEndpointSnappingThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (LineEndpointSnappingThresholdSlider != null && LineEndpointSnappingThresholdText != null)
|
||||||
|
{
|
||||||
|
double val = LineEndpointSnappingThresholdSlider.Value;
|
||||||
|
LineEndpointSnappingThresholdText.Text = ((int)val).ToString();
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("LineEndpointSnappingThresholdSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
@@ -199,7 +199,8 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
{
|
{
|
||||||
if (i == selectedIndex)
|
if (i == selectedIndex)
|
||||||
{
|
{
|
||||||
button.Background = new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
// 使用主题适配的选中背景颜色
|
||||||
|
button.Background = ThemeHelper.GetSelectedBackgroundBrush();
|
||||||
var textBlock = button.Child as TextBlock;
|
var textBlock = button.Child as TextBlock;
|
||||||
if (textBlock != null)
|
if (textBlock != null)
|
||||||
{
|
{
|
||||||
@@ -314,8 +315,8 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置当前按钮为选中状态
|
// 设置当前按钮为选中状态,使用主题适配的选中背景颜色
|
||||||
border.Background = new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
border.Background = ThemeHelper.GetSelectedBackgroundBrush();
|
||||||
var currentTextBlock = border.Child as TextBlock;
|
var currentTextBlock = border.Child as TextBlock;
|
||||||
if (currentTextBlock != null)
|
if (currentTextBlock != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -73,9 +73,51 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 即使找不到控件,也尝试触发事件(可能通过反射调用)
|
else
|
||||||
|
{
|
||||||
|
// 如果找不到控件和属性,先更新设置
|
||||||
|
// 对于自动收纳相关的设置,直接更新 Settings 对象
|
||||||
|
if (toggleSwitchName.StartsWith("ToggleSwitchAutoFold") || toggleSwitchName == "ToggleSwitchKeepFoldAfterSoftwareExit")
|
||||||
|
{
|
||||||
|
UpdateAutoFoldSetting(toggleSwitchName, isOn);
|
||||||
|
|
||||||
|
// 对于需要调用 StartOrStoptimerCheckAutoFold 的设置
|
||||||
|
if (toggleSwitchName.StartsWith("ToggleSwitchAutoFold") &&
|
||||||
|
!toggleSwitchName.Contains("PPTSlideShow") &&
|
||||||
|
!toggleSwitchName.Contains("KeepFold") &&
|
||||||
|
!toggleSwitchName.Contains("IgnoreDesktopAnno"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
InvokeMainWindowMethod("StartOrStoptimerCheckAutoFold");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"调用 StartOrStoptimerCheckAutoFold 失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通知新设置面板同步状态
|
||||||
|
NotifySettingsPanelsSyncState(toggleSwitchName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 尝试触发事件(可能通过反射调用)
|
||||||
var toggledMethodName = toggleSwitchName + "_Toggled";
|
var toggledMethodName = toggleSwitchName + "_Toggled";
|
||||||
|
var method = mainWindow.GetType().GetMethod(toggledMethodName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
if (method != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 尝试直接调用方法
|
||||||
InvokeMainWindowMethod(toggledMethodName, null, new RoutedEventArgs());
|
InvokeMainWindowMethod(toggledMethodName, null, new RoutedEventArgs());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"调用 {toggledMethodName} 失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 通知新设置面板同步状态
|
// 通知新设置面板同步状态
|
||||||
NotifySettingsPanelsSyncState(toggleSwitchName);
|
NotifySettingsPanelsSyncState(toggleSwitchName);
|
||||||
@@ -106,6 +148,61 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新自动收纳相关的设置
|
||||||
|
/// </summary>
|
||||||
|
private static void UpdateAutoFoldSetting(string toggleSwitchName, bool isOn)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (MainWindow.Settings?.Automation == null) return;
|
||||||
|
|
||||||
|
// 根据 ToggleSwitch 名称映射到对应的设置属性
|
||||||
|
var settingMap = new Dictionary<string, Action<bool>>
|
||||||
|
{
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiNote", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiNote = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiCamera", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiCamera = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInHiteTouchPro", (val) => MainWindow.Settings.Automation.IsAutoFoldInHiteTouchPro = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiNote3", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiNote3 = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiNote3C", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiNote3C = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiNote5C", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiNote5C = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInSeewoPincoTeacher", (val) => MainWindow.Settings.Automation.IsAutoFoldInSeewoPincoTeacher = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInHiteCamera", (val) => MainWindow.Settings.Automation.IsAutoFoldInHiteCamera = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInHiteLightBoard", (val) => MainWindow.Settings.Automation.IsAutoFoldInHiteLightBoard = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInWxBoardMain", (val) => MainWindow.Settings.Automation.IsAutoFoldInWxBoardMain = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInMSWhiteboard", (val) => MainWindow.Settings.Automation.IsAutoFoldInMSWhiteboard = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInAdmoxWhiteboard", (val) => MainWindow.Settings.Automation.IsAutoFoldInAdmoxWhiteboard = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInAdmoxBooth", (val) => MainWindow.Settings.Automation.IsAutoFoldInAdmoxBooth = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInQPoint", (val) => MainWindow.Settings.Automation.IsAutoFoldInQPoint = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInYiYunVisualPresenter", (val) => MainWindow.Settings.Automation.IsAutoFoldInYiYunVisualPresenter = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInMaxHubWhiteboard", (val) => MainWindow.Settings.Automation.IsAutoFoldInMaxHubWhiteboard = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInPPTSlideShow", (val) => MainWindow.Settings.Automation.IsAutoFoldInPPTSlideShow = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno", (val) => MainWindow.Settings.Automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno = val },
|
||||||
|
{ "ToggleSwitchAutoFoldInOldZyBoard", (val) => MainWindow.Settings.Automation.IsAutoFoldInOldZyBoard = val },
|
||||||
|
{ "ToggleSwitchKeepFoldAfterSoftwareExit", (val) => MainWindow.Settings.Automation.KeepFoldAfterSoftwareExit = val }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (settingMap.ContainsKey(toggleSwitchName))
|
||||||
|
{
|
||||||
|
settingMap[toggleSwitchName](isOn);
|
||||||
|
MainWindow.SaveSettingsToFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"更新自动收纳设置失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ToggleSwitch 包装类,用于在找不到实际控件时模拟 ToggleSwitch
|
||||||
|
/// </summary>
|
||||||
|
private class ToggleSwitchWrapper
|
||||||
|
{
|
||||||
|
public bool IsOn { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 调用 MainWindow 中的 ComboBox 事件处理方法
|
/// 调用 MainWindow 中的 ComboBox 事件处理方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -169,12 +169,12 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackPanel x:Name="PPTButtonSettingsPanel" Margin="0,12,0,0" Visibility="Visible">
|
<StackPanel x:Name="PPTButtonSettingsPanel" Margin="0,12,0,0" Visibility="Visible">
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,12">
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,12">
|
||||||
<CheckBox x:Name="CheckboxEnableLBPPTButton" IsChecked="True" Content="左下" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxEnableLBPPTButton" IsChecked="True" Content="左下" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxEnableRBPPTButton" IsChecked="True" Content="右下" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxEnableRBPPTButton" IsChecked="True" Content="右下" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxEnableLSPPTButton" IsChecked="True" Content="左侧" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxEnableLSPPTButton" IsChecked="True" Content="左侧" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxEnableRSPPTButton" IsChecked="True" Content="右侧" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxEnableRSPPTButton" IsChecked="True" Content="右侧" Margin="0,0,0,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
</StackPanel>
|
</WrapPanel>
|
||||||
<Grid Height="54">
|
<Grid Height="54">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@@ -182,7 +182,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0">
|
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0">
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="左侧偏移" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="左侧偏移" HorizontalAlignment="Left"/>
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调大往上偏移,调小往下偏移,修改为0为不偏移,居中放置" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="调大往上偏移,调小往下偏移,修改为0为不偏移,居中放置" HorizontalAlignment="Left" MaxWidth="450"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Grid Grid.Column="1" VerticalAlignment="Center" Margin="0,0,15,0">
|
<Grid Grid.Column="1" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0">
|
<StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0">
|
||||||
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="右侧偏移" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="右侧偏移" HorizontalAlignment="Left"/>
|
||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="调大往右偏移,调小往左偏移,修改为0为不偏移,居中放置" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" TextWrapping="Wrap" Text="调大往右偏移,调小往左偏移,修改为0为不偏移,居中放置" HorizontalAlignment="Left" MaxWidth="450"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Grid Grid.Column="1" VerticalAlignment="Center" Margin="0,0,15,0">
|
<Grid Grid.Column="1" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -252,11 +252,11 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
<Border Height="1" Background="#ebebeb" Margin="0,8,0,8"/>
|
<Border Height="1" Background="#ebebeb" Margin="0,8,0,8"/>
|
||||||
<TextBlock Text="两侧按钮设置" FontWeight="Bold" Foreground="#2e3436" FontSize="16" Margin="0,0,0,8"/>
|
<TextBlock Text="两侧按钮设置" FontWeight="Bold" Foreground="#2e3436" FontSize="16" Margin="0,0,0,8"/>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,8">
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,8">
|
||||||
<CheckBox x:Name="CheckboxSPPTDisplayPage" IsChecked="True" Content="显示页码" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxSPPTDisplayPage" IsChecked="True" Content="显示页码" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxSPPTHalfOpacity" IsChecked="True" Content="半透明" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxSPPTHalfOpacity" IsChecked="True" Content="半透明" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxSPPTBlackBackground" IsChecked="True" Content="黑色背景" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxSPPTBlackBackground" IsChecked="True" Content="黑色背景" Margin="0,0,0,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
</StackPanel>
|
</WrapPanel>
|
||||||
<StackPanel x:Name="PPTLSButtonOpacityPanel" Margin="0,8,0,8" Visibility="Visible">
|
<StackPanel x:Name="PPTLSButtonOpacityPanel" Margin="0,8,0,8" Visibility="Visible">
|
||||||
<Grid Height="54">
|
<Grid Height="54">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -299,11 +299,11 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Border Height="1" Background="#ebebeb" Margin="0,8,0,8"/>
|
<Border Height="1" Background="#ebebeb" Margin="0,8,0,8"/>
|
||||||
<TextBlock Text="左下右下按钮设置" FontWeight="Bold" Foreground="#2e3436" FontSize="16" Margin="0,0,0,8"/>
|
<TextBlock Text="左下右下按钮设置" FontWeight="Bold" Foreground="#2e3436" FontSize="16" Margin="0,0,0,8"/>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,8">
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,8">
|
||||||
<CheckBox x:Name="CheckboxBPPTDisplayPage" IsChecked="True" Content="显示页码" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxBPPTDisplayPage" IsChecked="True" Content="显示页码" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxBPPTHalfOpacity" IsChecked="True" Content="半透明" Margin="0,0,16,0" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxBPPTHalfOpacity" IsChecked="True" Content="半透明" Margin="0,0,16,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
<CheckBox x:Name="CheckboxBPPTBlackBackground" IsChecked="True" Content="黑色背景" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
<CheckBox x:Name="CheckboxBPPTBlackBackground" IsChecked="True" Content="黑色背景" Margin="0,0,0,8" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged"/>
|
||||||
</StackPanel>
|
</WrapPanel>
|
||||||
<StackPanel x:Name="PPTLBButtonOpacityPanel" Margin="0,8,0,8" Visibility="Visible">
|
<StackPanel x:Name="PPTLBButtonOpacityPanel" Margin="0,8,0,8" Visibility="Visible">
|
||||||
<Grid Height="54">
|
<Grid Height="54">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,6 +119,78 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
|
<!-- 墨迹设置 -->
|
||||||
|
<Border Margin="0,25,0,0" BorderBrush="#e6e6e6" BorderThickness="1.25,1.25,1.25,4" CornerRadius="8">
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<Grid Height="54">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="绘制圆时显示圆心位置" HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="绘制圆形时显示圆心标记" HorizontalAlignment="Left"/>
|
||||||
|
</StackPanel>
|
||||||
|
<Border x:Name="ToggleSwitchShowCircleCenter" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" Tag="ShowCircleCenter" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
|
<Border.Effect>
|
||||||
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
|
</Border.Effect>
|
||||||
|
</Border>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
<Border Height="1" Background="#ebebeb"/>
|
||||||
|
<Grid Height="54">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="使用WPF默认贝塞尔曲线平滑" HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="使用WPF内置的曲线平滑算法" HorizontalAlignment="Left"/>
|
||||||
|
</StackPanel>
|
||||||
|
<Border x:Name="ToggleSwitchFitToCurve" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1" Tag="FitToCurve" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
|
<Border.Effect>
|
||||||
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
|
</Border.Effect>
|
||||||
|
</Border>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
<Border Height="1" Background="#ebebeb"/>
|
||||||
|
<Grid Height="54">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="使用高级曲线平滑(推荐)" HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="使用改进的贝塞尔曲线平滑算法,提供更好的绘制效果" HorizontalAlignment="Left"/>
|
||||||
|
</StackPanel>
|
||||||
|
<Border x:Name="ToggleSwitchAdvancedBezierSmoothing" Style="{StaticResource ToggleSwitchStyle}" Background="#3584e4" Tag="AdvancedBezierSmoothing" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Right" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
|
<Border.Effect>
|
||||||
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
|
</Border.Effect>
|
||||||
|
</Border>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
<Border Height="1" Background="#ebebeb"/>
|
||||||
|
<Grid Height="54">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="启用墨迹渐隐功能" HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="开启后墨迹不会绘制到画布上,而是保持湿墨迹状态,根据设置的渐隐时间自动消失" HorizontalAlignment="Left"/>
|
||||||
|
</StackPanel>
|
||||||
|
<Border x:Name="ToggleSwitchEnableInkFade" Style="{StaticResource ToggleSwitchStyle}" Background="#e1e1e1" Tag="EnableInkFade" MouseLeftButtonDown="ToggleSwitch_Click">
|
||||||
|
<Border Width="19" Height="19" Background="White" CornerRadius="10" HorizontalAlignment="Left" VerticalAlignment="Center" IsHitTestVisible="False">
|
||||||
|
<Border.Effect>
|
||||||
|
<DropShadowEffect BlurRadius="4" Direction="-45" Color="Black" Opacity="0.3" ShadowDepth="0"/>
|
||||||
|
</Border.Effect>
|
||||||
|
</Border>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
<Border Height="1" Background="#ebebeb"/>
|
||||||
|
<Grid Height="54" x:Name="InkFadeTimePanel" Visibility="Collapsed">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="18,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Foreground="#2e3436" FontSize="14.5" Text="墨迹渐隐时间" HorizontalAlignment="Left"/>
|
||||||
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置墨迹从绘制到完全消失的时间" HorizontalAlignment="Left"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
|
<Slider x:Name="InkFadeTimeSlider" Width="150" Minimum="1000" Maximum="10000" Value="3000" TickFrequency="1000" IsSnapToTickEnabled="True" ValueChanged="InkFadeTimeSlider_ValueChanged"/>
|
||||||
|
<TextBlock x:Name="InkFadeTimeText" Text="3000ms" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
<!-- 自动清理设置 -->
|
<!-- 自动清理设置 -->
|
||||||
<Border Margin="0,25,0,0" BorderBrush="#e6e6e6" BorderThickness="1.25,1.25,1.25,4" CornerRadius="8">
|
<Border Margin="0,25,0,0" BorderBrush="#e6e6e6" BorderThickness="1.25,1.25,1.25,4" CornerRadius="8">
|
||||||
<StackPanel Orientation="Vertical" Margin="18,18,18,18">
|
<StackPanel Orientation="Vertical" Margin="18,18,18,18">
|
||||||
|
|||||||
@@ -135,6 +135,36 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
{
|
{
|
||||||
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoSaveScreenShotInPowerPoint"), MainWindow.Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint);
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoSaveScreenShotInPowerPoint"), MainWindow.Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 墨迹设置
|
||||||
|
if (MainWindow.Settings.Canvas != null)
|
||||||
|
{
|
||||||
|
var canvas = MainWindow.Settings.Canvas;
|
||||||
|
|
||||||
|
// 绘制圆时显示圆心位置
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchShowCircleCenter"), canvas.ShowCircleCenter);
|
||||||
|
|
||||||
|
// 使用WPF默认贝塞尔曲线平滑
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchFitToCurve"), canvas.FitToCurve && !canvas.UseAdvancedBezierSmoothing);
|
||||||
|
|
||||||
|
// 使用高级贝塞尔曲线平滑
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAdvancedBezierSmoothing"), canvas.UseAdvancedBezierSmoothing);
|
||||||
|
|
||||||
|
// 启用墨迹渐隐功能
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchEnableInkFade"), canvas.EnableInkFade);
|
||||||
|
if (InkFadeTimePanel != null)
|
||||||
|
{
|
||||||
|
InkFadeTimePanel.Visibility = canvas.EnableInkFade ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
if (InkFadeTimeSlider != null)
|
||||||
|
{
|
||||||
|
InkFadeTimeSlider.Value = canvas.InkFadeTime;
|
||||||
|
if (InkFadeTimeText != null)
|
||||||
|
{
|
||||||
|
InkFadeTimeText.Text = $"{canvas.InkFadeTime}ms";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -160,7 +190,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
@@ -216,6 +246,43 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
AutoDelIntervalPanel.Visibility = newState ? Visibility.Visible : Visibility.Collapsed;
|
AutoDelIntervalPanel.Visibility = newState ? Visibility.Visible : Visibility.Collapsed;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "ShowCircleCenter":
|
||||||
|
// 调用 MainWindow 中的方法
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchShowCircleCenter", newState);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "FitToCurve":
|
||||||
|
// 调用 MainWindow 中的方法
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchFitToCurve", newState);
|
||||||
|
// 处理互斥逻辑
|
||||||
|
if (newState)
|
||||||
|
{
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAdvancedBezierSmoothing", false);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAdvancedBezierSmoothing"), false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "AdvancedBezierSmoothing":
|
||||||
|
// 调用 MainWindow 中的方法
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAdvancedBezierSmoothing", newState);
|
||||||
|
// 处理互斥逻辑
|
||||||
|
if (newState)
|
||||||
|
{
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchFitToCurve", false);
|
||||||
|
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchFitToCurve"), false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "EnableInkFade":
|
||||||
|
// 调用 MainWindow 中的方法
|
||||||
|
MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchEnableInkFade", newState);
|
||||||
|
// 更新UI状态
|
||||||
|
if (InkFadeTimePanel != null)
|
||||||
|
{
|
||||||
|
InkFadeTimePanel.Visibility = newState ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,6 +370,21 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 墨迹渐隐时间滑块值变化事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void InkFadeTimeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (InkFadeTimeSlider != null && InkFadeTimeText != null)
|
||||||
|
{
|
||||||
|
int value = (int)InkFadeTimeSlider.Value;
|
||||||
|
InkFadeTimeText.Text = $"{value}ms";
|
||||||
|
// 调用 MainWindow 中的方法
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("InkFadeTimeSlider", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ComboBox选择变化事件处理
|
/// ComboBox选择变化事件处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -365,12 +447,43 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
ThemeHelper.ApplyThemeToControl(this);
|
ThemeHelper.ApplyThemeToControl(this);
|
||||||
|
|
||||||
|
// 为所有 ComboBox 添加 DropDownOpened 事件处理,以便在下拉菜单打开时更新颜色
|
||||||
|
UpdateComboBoxDropdownTheme(ComboBoxAutoDelSavedFilesDaysThreshold);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"SnapshotPanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"SnapshotPanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 为 ComboBox 添加下拉菜单主题更新
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateComboBoxDropdownTheme(System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
if (comboBox == null) return;
|
||||||
|
|
||||||
|
// 移除旧的事件处理(如果存在)
|
||||||
|
comboBox.DropDownOpened -= ComboBox_DropDownOpened;
|
||||||
|
// 添加新的事件处理
|
||||||
|
comboBox.DropDownOpened += ComboBox_DropDownOpened;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBox 下拉菜单打开事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void ComboBox_DropDownOpened(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
// 延迟更新,确保 Popup 已经完全创建
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
ThemeHelper.UpdateComboBoxDropdownColors(comboBox);
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -218,7 +218,9 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
|
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
|
||||||
{
|
{
|
||||||
if (toggleSwitch == null) return;
|
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.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
@@ -509,12 +511,44 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
|
|
||||||
// 使用 ThemeHelper 递归更新其他元素
|
// 使用 ThemeHelper 递归更新其他元素
|
||||||
ThemeHelper.ApplyThemeToControl(this);
|
ThemeHelper.ApplyThemeToControl(this);
|
||||||
|
|
||||||
|
// 为所有 ComboBox 添加 DropDownOpened 事件处理,以便在下拉菜单打开时更新颜色
|
||||||
|
UpdateComboBoxDropdownTheme(AutoUpdateWithSilenceStartTimeComboBox);
|
||||||
|
UpdateComboBoxDropdownTheme(AutoUpdateWithSilenceEndTimeComboBox);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"StartupPanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"StartupPanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 为 ComboBox 添加下拉菜单主题更新
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateComboBoxDropdownTheme(System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
if (comboBox == null) return;
|
||||||
|
|
||||||
|
// 移除旧的事件处理(如果存在)
|
||||||
|
comboBox.DropDownOpened -= ComboBox_DropDownOpened;
|
||||||
|
// 添加新的事件处理
|
||||||
|
comboBox.DropDownOpened += ComboBox_DropDownOpened;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBox 下拉菜单打开事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void ComboBox_DropDownOpened(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
// 延迟更新,确保 Popup 已经完全创建
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
ThemeHelper.UpdateComboBoxDropdownColors(comboBox);
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Ink_Canvas;
|
using Ink_Canvas;
|
||||||
|
|
||||||
@@ -276,6 +278,28 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
comboBox.Foreground = GetTextPrimaryBrush();
|
comboBox.Foreground = GetTextPrimaryBrush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 更新 ComboBox 背景色
|
||||||
|
var background = comboBox.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
comboBox.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新 ComboBox 边框颜色
|
||||||
|
var borderBrush = comboBox.BorderBrush as SolidColorBrush;
|
||||||
|
if (borderBrush != null)
|
||||||
|
{
|
||||||
|
var color = borderBrush.Color;
|
||||||
|
if (color.R == 230 && color.G == 230 && color.B == 230) // #e6e6e6
|
||||||
|
{
|
||||||
|
comboBox.BorderBrush = GetBorderPrimaryBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新 ComboBoxItem 颜色
|
||||||
|
UpdateComboBoxItemColors(comboBox);
|
||||||
}
|
}
|
||||||
UpdateInputControlsColors(child);
|
UpdateInputControlsColors(child);
|
||||||
}
|
}
|
||||||
@@ -453,6 +477,396 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 ComboBoxItem 的颜色
|
||||||
|
/// </summary>
|
||||||
|
private static void UpdateComboBoxItemColors(System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 更新下拉菜单中的 ComboBoxItem
|
||||||
|
if (comboBox.Items.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var item in comboBox.Items)
|
||||||
|
{
|
||||||
|
if (item is System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
var foreground = comboBoxItem.Foreground as SolidColorBrush;
|
||||||
|
if (foreground != null)
|
||||||
|
{
|
||||||
|
var color = foreground.Color;
|
||||||
|
if (color.R == 46 && color.G == 52 && color.B == 54) // #2e3436
|
||||||
|
{
|
||||||
|
comboBoxItem.Foreground = GetTextPrimaryBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var background = comboBoxItem.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
comboBoxItem.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// 忽略错误
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 ComboBox 下拉菜单的颜色(在 ComboBox 打开时调用)
|
||||||
|
/// </summary>
|
||||||
|
public static void UpdateComboBoxDropdownColors(System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (comboBox == null || !comboBox.IsDropDownOpen) return;
|
||||||
|
|
||||||
|
// 通过 VisualTreeHelper 查找 Popup
|
||||||
|
System.Windows.Controls.Primitives.Popup popup = null;
|
||||||
|
for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(comboBox); i++)
|
||||||
|
{
|
||||||
|
var child = System.Windows.Media.VisualTreeHelper.GetChild(comboBox, i);
|
||||||
|
if (child is System.Windows.Controls.Primitives.Popup foundPopup)
|
||||||
|
{
|
||||||
|
popup = foundPopup;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// 递归查找
|
||||||
|
popup = FindPopupInVisualTree(child);
|
||||||
|
if (popup != null) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (popup == null)
|
||||||
|
{
|
||||||
|
// 如果找不到,尝试通过模板查找
|
||||||
|
if (comboBox.Template != null)
|
||||||
|
{
|
||||||
|
popup = comboBox.Template.FindName("Popup", comboBox) as System.Windows.Controls.Primitives.Popup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (popup != null && popup.Child is System.Windows.Controls.Border popupBorder)
|
||||||
|
{
|
||||||
|
// 更新下拉菜单背景色
|
||||||
|
var background = popupBorder.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
popupBorder.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新下拉菜单边框颜色
|
||||||
|
var borderBrush = popupBorder.BorderBrush as SolidColorBrush;
|
||||||
|
if (borderBrush != null)
|
||||||
|
{
|
||||||
|
var color = borderBrush.Color;
|
||||||
|
if (color.R == 230 && color.G == 230 && color.B == 230) // #e6e6e6
|
||||||
|
{
|
||||||
|
popupBorder.BorderBrush = GetBorderPrimaryBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新下拉菜单中的 ComboBoxItem
|
||||||
|
UpdateComboBoxItemColorsInPopup(popupBorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"更新 ComboBox 下拉菜单颜色时出错: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 在可视化树中查找 Popup
|
||||||
|
/// </summary>
|
||||||
|
private static System.Windows.Controls.Primitives.Popup FindPopupInVisualTree(System.Windows.DependencyObject parent)
|
||||||
|
{
|
||||||
|
if (parent == null) return null;
|
||||||
|
|
||||||
|
if (parent is System.Windows.Controls.Primitives.Popup popup)
|
||||||
|
{
|
||||||
|
return popup;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(parent); i++)
|
||||||
|
{
|
||||||
|
var child = System.Windows.Media.VisualTreeHelper.GetChild(parent, i);
|
||||||
|
var found = FindPopupInVisualTree(child);
|
||||||
|
if (found != null) return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 ComboBox 下拉菜单的背景色(通过 Popup)
|
||||||
|
/// </summary>
|
||||||
|
public static void UpdateComboBoxPopupColors(System.Windows.DependencyObject parent)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(parent); i++)
|
||||||
|
{
|
||||||
|
var child = System.Windows.Media.VisualTreeHelper.GetChild(parent, i);
|
||||||
|
if (child is System.Windows.Controls.Primitives.Popup popup)
|
||||||
|
{
|
||||||
|
// 查找 Popup 中的 Border(下拉菜单容器)
|
||||||
|
if (popup.Child is System.Windows.Controls.Border popupBorder)
|
||||||
|
{
|
||||||
|
var background = popupBorder.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
popupBorder.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var borderBrush = popupBorder.BorderBrush as SolidColorBrush;
|
||||||
|
if (borderBrush != null)
|
||||||
|
{
|
||||||
|
var color = borderBrush.Color;
|
||||||
|
if (color.R == 230 && color.G == 230 && color.B == 230) // #e6e6e6
|
||||||
|
{
|
||||||
|
popupBorder.BorderBrush = GetBorderPrimaryBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 递归更新 Popup 内部的 ComboBoxItem
|
||||||
|
UpdateComboBoxItemColorsInPopup(popupBorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UpdateComboBoxPopupColors(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 Popup 内部的 ComboBoxItem 颜色
|
||||||
|
/// </summary>
|
||||||
|
private static void UpdateComboBoxItemColorsInPopup(System.Windows.DependencyObject parent)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(parent); i++)
|
||||||
|
{
|
||||||
|
var child = System.Windows.Media.VisualTreeHelper.GetChild(parent, i);
|
||||||
|
if (child is System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
var foreground = comboBoxItem.Foreground as SolidColorBrush;
|
||||||
|
if (foreground != null)
|
||||||
|
{
|
||||||
|
var color = foreground.Color;
|
||||||
|
if (color.R == 46 && color.G == 52 && color.B == 54) // #2e3436
|
||||||
|
{
|
||||||
|
comboBoxItem.Foreground = GetTextPrimaryBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新默认背景
|
||||||
|
var background = comboBoxItem.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
comboBoxItem.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新样式触发器中的颜色
|
||||||
|
UpdateComboBoxItemStyleTriggers(comboBoxItem);
|
||||||
|
// 更新模板中的 Border 背景色
|
||||||
|
UpdateComboBoxItemTemplateBorder(comboBoxItem);
|
||||||
|
// 为 ComboBoxItem 添加状态变化监听
|
||||||
|
AttachComboBoxItemStateHandlers(comboBoxItem);
|
||||||
|
}
|
||||||
|
UpdateComboBoxItemColorsInPopup(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 ComboBoxItem 模板中的 Border 背景色
|
||||||
|
/// </summary>
|
||||||
|
private static void UpdateComboBoxItemTemplateBorder(System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (comboBoxItem.Template == null) return;
|
||||||
|
|
||||||
|
// 查找模板中的 Border
|
||||||
|
var border = comboBoxItem.Template.FindName("Border", comboBoxItem) as System.Windows.Controls.Border;
|
||||||
|
if (border != null)
|
||||||
|
{
|
||||||
|
var background = border.Background as SolidColorBrush;
|
||||||
|
if (background != null)
|
||||||
|
{
|
||||||
|
var color = background.Color;
|
||||||
|
// 根据当前状态更新背景色
|
||||||
|
if (comboBoxItem.IsSelected)
|
||||||
|
{
|
||||||
|
border.Background = GetSelectedBackgroundBrush();
|
||||||
|
}
|
||||||
|
else if (comboBoxItem.IsMouseOver)
|
||||||
|
{
|
||||||
|
border.Background = GetHoverBackgroundBrush();
|
||||||
|
}
|
||||||
|
else if (color.R == 255 && color.G == 255 && color.B == 255) // 白色背景
|
||||||
|
{
|
||||||
|
border.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
else if (color.R == 245 && color.G == 245 && color.B == 245) // #f5f5f5 悬停背景
|
||||||
|
{
|
||||||
|
border.Background = GetHoverBackgroundBrush();
|
||||||
|
}
|
||||||
|
else if (color.R == 225 && color.G == 225 && color.B == 225) // #e1e1e1 选中背景
|
||||||
|
{
|
||||||
|
border.Background = GetSelectedBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// 忽略错误
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 为 ComboBoxItem 添加状态变化监听
|
||||||
|
/// </summary>
|
||||||
|
private static void AttachComboBoxItemStateHandlers(System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 移除旧的事件处理(如果存在)
|
||||||
|
comboBoxItem.MouseEnter -= ComboBoxItem_MouseEnter;
|
||||||
|
comboBoxItem.MouseLeave -= ComboBoxItem_MouseLeave;
|
||||||
|
comboBoxItem.Selected -= ComboBoxItem_Selected;
|
||||||
|
comboBoxItem.Unselected -= ComboBoxItem_Unselected;
|
||||||
|
|
||||||
|
// 添加新的事件处理
|
||||||
|
comboBoxItem.MouseEnter += ComboBoxItem_MouseEnter;
|
||||||
|
comboBoxItem.MouseLeave += ComboBoxItem_MouseLeave;
|
||||||
|
comboBoxItem.Selected += ComboBoxItem_Selected;
|
||||||
|
comboBoxItem.Unselected += ComboBoxItem_Unselected;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// 忽略错误
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBoxItem 鼠标进入事件处理
|
||||||
|
/// </summary>
|
||||||
|
private static void ComboBoxItem_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBoxItem comboBoxItem && !comboBoxItem.IsSelected)
|
||||||
|
{
|
||||||
|
var border = comboBoxItem.Template?.FindName("Border", comboBoxItem) as System.Windows.Controls.Border;
|
||||||
|
if (border != null)
|
||||||
|
{
|
||||||
|
border.Background = GetHoverBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBoxItem 鼠标离开事件处理
|
||||||
|
/// </summary>
|
||||||
|
private static void ComboBoxItem_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBoxItem comboBoxItem && !comboBoxItem.IsSelected)
|
||||||
|
{
|
||||||
|
var border = comboBoxItem.Template?.FindName("Border", comboBoxItem) as System.Windows.Controls.Border;
|
||||||
|
if (border != null)
|
||||||
|
{
|
||||||
|
border.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBoxItem 选中事件处理
|
||||||
|
/// </summary>
|
||||||
|
private static void ComboBoxItem_Selected(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
var border = comboBoxItem.Template?.FindName("Border", comboBoxItem) as System.Windows.Controls.Border;
|
||||||
|
if (border != null)
|
||||||
|
{
|
||||||
|
border.Background = GetSelectedBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBoxItem 取消选中事件处理
|
||||||
|
/// </summary>
|
||||||
|
private static void ComboBoxItem_Unselected(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
var border = comboBoxItem.Template?.FindName("Border", comboBoxItem) as System.Windows.Controls.Border;
|
||||||
|
if (border != null)
|
||||||
|
{
|
||||||
|
if (comboBoxItem.IsMouseOver)
|
||||||
|
{
|
||||||
|
border.Background = GetHoverBackgroundBrush();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
border.Background = GetTextBoxBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新 ComboBoxItem 样式触发器中的颜色
|
||||||
|
/// </summary>
|
||||||
|
private static void UpdateComboBoxItemStyleTriggers(System.Windows.Controls.ComboBoxItem comboBoxItem)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (comboBoxItem.Style == null) return;
|
||||||
|
|
||||||
|
// 更新样式触发器中的颜色
|
||||||
|
foreach (var trigger in comboBoxItem.Style.Triggers)
|
||||||
|
{
|
||||||
|
if (trigger is System.Windows.Trigger baseTrigger)
|
||||||
|
{
|
||||||
|
foreach (var setter in baseTrigger.Setters)
|
||||||
|
{
|
||||||
|
if (setter is System.Windows.Setter setterBase)
|
||||||
|
{
|
||||||
|
// 更新悬停背景色
|
||||||
|
if (setterBase.Property == System.Windows.Controls.Control.BackgroundProperty &&
|
||||||
|
setterBase.Value is SolidColorBrush brush)
|
||||||
|
{
|
||||||
|
var color = brush.Color;
|
||||||
|
if (color.R == 245 && color.G == 245 && color.B == 245) // #f5f5f5 悬停背景
|
||||||
|
{
|
||||||
|
setterBase.Value = GetHoverBackgroundBrush();
|
||||||
|
}
|
||||||
|
else if (color.R == 225 && color.G == 225 && color.B == 225) // #e1e1e1 选中背景
|
||||||
|
{
|
||||||
|
setterBase.Value = GetSelectedBackgroundBrush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// 忽略错误
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 应用主题到整个控件树
|
/// 应用主题到整个控件树
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -464,6 +878,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
UpdateInputControlsColors(control);
|
UpdateInputControlsColors(control);
|
||||||
UpdateButtonColors(control);
|
UpdateButtonColors(control);
|
||||||
UpdateImageIconColors(control);
|
UpdateImageIconColors(control);
|
||||||
|
UpdateComboBoxPopupColors(control);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
if (toggleSwitch == null) return;
|
if (toggleSwitch == null) return;
|
||||||
toggleSwitch.Background = isOn
|
toggleSwitch.Background = isOn
|
||||||
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
|
||||||
: new SolidColorBrush(Color.FromRgb(225, 225, 225));
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
var innerBorder = toggleSwitch.Child as Border;
|
var innerBorder = toggleSwitch.Child as Border;
|
||||||
if (innerBorder != null)
|
if (innerBorder != null)
|
||||||
{
|
{
|
||||||
@@ -797,12 +797,44 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
ThemeHelper.ApplyThemeToControl(this);
|
ThemeHelper.ApplyThemeToControl(this);
|
||||||
|
|
||||||
|
// 为所有 ComboBox 添加 DropDownOpened 事件处理,以便在下拉菜单打开时更新颜色
|
||||||
|
UpdateComboBoxDropdownTheme(ComboBoxSplashScreenStyle);
|
||||||
|
UpdateComboBoxDropdownTheme(ComboBoxFloatingBarImg);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"ThemePanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"ThemePanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 为 ComboBox 添加下拉菜单主题更新
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateComboBoxDropdownTheme(System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
if (comboBox == null) return;
|
||||||
|
|
||||||
|
// 移除旧的事件处理(如果存在)
|
||||||
|
comboBox.DropDownOpened -= ComboBox_DropDownOpened;
|
||||||
|
// 添加新的事件处理
|
||||||
|
comboBox.DropDownOpened += ComboBox_DropDownOpened;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ComboBox 下拉菜单打开事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void ComboBox_DropDownOpened(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is System.Windows.Controls.ComboBox comboBox)
|
||||||
|
{
|
||||||
|
// 延迟更新,确保 Popup 已经完全创建
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
ThemeHelper.UpdateComboBoxDropdownColors(comboBox);
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置计时器提醒音的音量" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置计时器提醒音的音量" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="TimerVolumeSlider" Width="150" Minimum="0" Maximum="1" Value="1" TickFrequency="0.1" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="TimerVolumeSlider" Width="150" Minimum="0" Maximum="1" Value="1" TickFrequency="0.1" IsSnapToTickEnabled="True" ValueChanged="TimerVolumeSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="TimerVolumeText" Text="100%" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436" FontFamily="Consolas"/>
|
<TextBlock x:Name="TimerVolumeText" Text="100%" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436" FontFamily="Consolas"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置渐进提醒音的音量" HorizontalAlignment="Left"/>
|
<TextBlock Foreground="#9a9996" FontSize="11" Margin="0,3.5,0,0" Text="设置渐进提醒音的音量" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,15,0">
|
||||||
<Slider x:Name="ProgressiveReminderVolumeSlider" Width="150" Minimum="0" Maximum="1" Value="1" TickFrequency="0.1" IsSnapToTickEnabled="True"/>
|
<Slider x:Name="ProgressiveReminderVolumeSlider" Width="150" Minimum="0" Maximum="1" Value="1" TickFrequency="0.1" IsSnapToTickEnabled="True" ValueChanged="ProgressiveReminderVolumeSlider_ValueChanged"/>
|
||||||
<TextBlock x:Name="ProgressiveReminderVolumeText" Text="100%" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436" FontFamily="Consolas"/>
|
<TextBlock x:Name="ProgressiveReminderVolumeText" Text="100%" VerticalAlignment="Center" FontSize="14" Margin="12,0,0,0" Foreground="#2e3436" FontFamily="Consolas"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using Ink_Canvas;
|
||||||
|
using iNKORE.UI.WPF.Helpers;
|
||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
@@ -9,9 +11,87 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class TimerPanel : UserControl
|
public partial class TimerPanel : UserControl
|
||||||
{
|
{
|
||||||
|
private bool _isLoaded = false;
|
||||||
|
|
||||||
public TimerPanel()
|
public TimerPanel()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
Loaded += TimerPanel_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TimerPanel_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LoadSettings();
|
||||||
|
// 添加触摸支持
|
||||||
|
MainWindowSettingsHelper.EnableTouchSupportForControls(this);
|
||||||
|
// 应用主题
|
||||||
|
ApplyTheme();
|
||||||
|
_isLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加载设置
|
||||||
|
/// </summary>
|
||||||
|
public void LoadSettings()
|
||||||
|
{
|
||||||
|
if (MainWindow.Settings == null || MainWindow.Settings.RandSettings == null) return;
|
||||||
|
|
||||||
|
_isLoaded = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var randSettings = MainWindow.Settings.RandSettings;
|
||||||
|
|
||||||
|
// 定时器音量
|
||||||
|
if (TimerVolumeSlider != null)
|
||||||
|
{
|
||||||
|
TimerVolumeSlider.Value = randSettings.TimerVolume;
|
||||||
|
if (TimerVolumeText != null)
|
||||||
|
{
|
||||||
|
TimerVolumeText.Text = (randSettings.TimerVolume * 100).ToString("F0") + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渐进提醒
|
||||||
|
var toggleSwitchEnableProgressiveReminder = this.FindDescendantByName("ToggleSwitchEnableProgressiveReminder") as Border;
|
||||||
|
if (toggleSwitchEnableProgressiveReminder != null)
|
||||||
|
{
|
||||||
|
bool isOn = randSettings.EnableProgressiveReminder;
|
||||||
|
toggleSwitchEnableProgressiveReminder.Background = isOn
|
||||||
|
? new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(53, 132, 228))
|
||||||
|
: ThemeHelper.GetButtonBackgroundBrush();
|
||||||
|
var innerBorder = toggleSwitchEnableProgressiveReminder.Child as Border;
|
||||||
|
if (innerBorder != null)
|
||||||
|
{
|
||||||
|
innerBorder.HorizontalAlignment = isOn ? HorizontalAlignment.Right : HorizontalAlignment.Left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渐进提醒音量面板可见性
|
||||||
|
var progressiveReminderVolumePanel = this.FindDescendantByName("ProgressiveReminderVolumePanel") as Grid;
|
||||||
|
if (progressiveReminderVolumePanel != null)
|
||||||
|
{
|
||||||
|
progressiveReminderVolumePanel.Visibility = randSettings.EnableProgressiveReminder
|
||||||
|
? Visibility.Visible
|
||||||
|
: Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渐进提醒音量
|
||||||
|
if (ProgressiveReminderVolumeSlider != null)
|
||||||
|
{
|
||||||
|
ProgressiveReminderVolumeSlider.Value = randSettings.ProgressiveReminderVolume;
|
||||||
|
if (ProgressiveReminderVolumeText != null)
|
||||||
|
{
|
||||||
|
ProgressiveReminderVolumeText.Text = (randSettings.ProgressiveReminderVolume * 100).ToString("F0") + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"加载定时器设置时出错: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
_isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
public event EventHandler<RoutedEventArgs> IsTopBarNeedShadowEffect;
|
||||||
@@ -44,6 +124,31 @@ namespace Ink_Canvas.Windows.SettingsViews
|
|||||||
System.Diagnostics.Debug.WriteLine($"TimerPanel 应用主题时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"TimerPanel 应用主题时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Slider值变化事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void TimerVolumeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (TimerVolumeSlider != null && TimerVolumeText != null)
|
||||||
|
{
|
||||||
|
double val = TimerVolumeSlider.Value;
|
||||||
|
TimerVolumeText.Text = (val * 100).ToString("F0") + "%";
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("TimerVolumeSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProgressiveReminderVolumeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
|
{
|
||||||
|
if (!_isLoaded) return;
|
||||||
|
if (ProgressiveReminderVolumeSlider != null && ProgressiveReminderVolumeText != null)
|
||||||
|
{
|
||||||
|
double val = ProgressiveReminderVolumeSlider.Value;
|
||||||
|
ProgressiveReminderVolumeText.Text = (val * 100).ToString("F0") + "%";
|
||||||
|
MainWindowSettingsHelper.InvokeSliderValueChanged("ProgressiveReminderVolumeSlider", val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -982,7 +982,7 @@ namespace Ink_Canvas.Windows
|
|||||||
if (SnapshotPane != null) SnapshotPane.Visibility = _selectedSidebarItemName == "SnapshotItem" ? Visibility.Visible : Visibility.Collapsed;
|
if (SnapshotPane != null) SnapshotPane.Visibility = _selectedSidebarItemName == "SnapshotItem" ? Visibility.Visible : Visibility.Collapsed;
|
||||||
if (AdvancedPane != null) AdvancedPane.Visibility = _selectedSidebarItemName == "AdvancedItem" ? Visibility.Visible : Visibility.Collapsed;
|
if (AdvancedPane != null) AdvancedPane.Visibility = _selectedSidebarItemName == "AdvancedItem" ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
|
||||||
// 为新显示的面板应用主题(延迟执行,确保面板已完全显示)
|
// 为新显示的面板加载设置并应用主题
|
||||||
if (panelMappings.ContainsKey(_selectedSidebarItemName))
|
if (panelMappings.ContainsKey(_selectedSidebarItemName))
|
||||||
{
|
{
|
||||||
var selectedPanel = panelMappings[_selectedSidebarItemName];
|
var selectedPanel = panelMappings[_selectedSidebarItemName];
|
||||||
@@ -992,6 +992,15 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// 先加载设置,确保显示的状态与实际一致
|
||||||
|
var loadSettingsMethod = selectedPanel.GetType().GetMethod("LoadSettings",
|
||||||
|
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
|
if (loadSettingsMethod != null)
|
||||||
|
{
|
||||||
|
loadSettingsMethod.Invoke(selectedPanel, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 然后应用主题
|
||||||
var applyThemeMethod = selectedPanel.GetType().GetMethod("ApplyTheme",
|
var applyThemeMethod = selectedPanel.GetType().GetMethod("ApplyTheme",
|
||||||
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
if (applyThemeMethod != null)
|
if (applyThemeMethod != null)
|
||||||
@@ -1001,7 +1010,7 @@ namespace Ink_Canvas.Windows
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"切换面板时应用主题到 {selectedPanel.GetType().Name} 时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"切换面板时加载设置和应用主题到 {selectedPanel.GetType().Name} 时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user