using Ink_Canvas.Windows.SettingsViews.Helpers; using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; namespace Ink_Canvas.Windows.SettingsViews.Pages { public partial class InkRecognitionPage : iNKORE.UI.WPF.Modern.Controls.Page { private bool _isLoaded = false; public InkRecognitionPage() { InitializeComponent(); Loaded += InkRecognitionPage_Loaded; } private void InkRecognitionPage_Loaded(object sender, RoutedEventArgs e) { LoadSettings(); _isLoaded = true; } private void LoadSettings() { _isLoaded = false; try { var settings = SettingsManager.Settings; if (settings.InkToShape != null) { CardEnableInkToShape.IsOn = settings.InkToShape.IsInkToShapeEnabled; int eng = settings.InkToShape.ShapeRecognitionEngine; if (eng < 0) eng = 0; if (eng > 2) eng = 2; ComboBoxShapeRecognitionEngine.SelectedIndex = eng; CardEnableWinRtHandwritingStrokeBeautify.IsOn = settings.InkToShape.EnableWinRtHandwritingStrokeBeautify; CardEnableInkToShapeNoFakePressureRectangle.IsOn = settings.InkToShape.IsInkToShapeNoFakePressureRectangle; CardEnableInkToShapeNoFakePressureTriangle.IsOn = settings.InkToShape.IsInkToShapeNoFakePressureTriangle; ToggleCheckboxEnableInkToShapeTriangle.IsChecked = settings.InkToShape.IsInkToShapeTriangle; ToggleCheckboxEnableInkToShapeRectangle.IsChecked = settings.InkToShape.IsInkToShapeRectangle; ToggleCheckboxEnableInkToShapeRounded.IsChecked = settings.InkToShape.IsInkToShapeRounded; LineStraightenSensitivitySlider.Value = settings.InkToShape.LineStraightenSensitivity; } if (settings.Canvas != null) { ToggleSwitchAutoStraightenLine.IsOn = settings.Canvas.AutoStraightenLine; AutoStraightenLineThresholdSlider.Value = settings.Canvas.AutoStraightenLineThreshold; ToggleSwitchHighPrecisionLineStraighten.IsOn = settings.Canvas.HighPrecisionLineStraighten; ToggleSwitchLineEndpointSnapping.IsOn = settings.Canvas.LineEndpointSnapping; } } catch (Exception ex) { Debug.WriteLine($"加载墨迹纠正设置时出错: {ex.Message}"); } _isLoaded = true; ExpanderAutoStraightenLine.IsExpanded = ToggleSwitchAutoStraightenLine.IsOn; ExpanderLineEndpointSnapping.IsExpanded = ToggleSwitchLineEndpointSnapping.IsOn; } private void ToggleSwitchEnableInkToShape_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeEnabled = CardEnableInkToShape.IsOn; SettingsManager.SaveSettingsToFile(); var mw = Application.Current.MainWindow as MainWindow; if (mw != null) { if (mw.FloatingBarToggleSwitchEnableInkToShape != null) mw.FloatingBarToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn; if (mw.BoardToggleSwitchEnableInkToShape != null) mw.BoardToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn; } } private void ComboBoxShapeRecognitionEngine_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!_isLoaded || ComboBoxShapeRecognitionEngine == null) return; int idx = ComboBoxShapeRecognitionEngine.SelectedIndex; if (idx < 0) idx = 0; if (idx > 2) idx = 2; SettingsManager.Settings.InkToShape.ShapeRecognitionEngine = idx; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchEnableWinRtHandwritingStrokeBeautify_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.EnableWinRtHandwritingStrokeBeautify = CardEnableWinRtHandwritingStrokeBeautify.IsOn; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchEnableInkToShapeNoFakePressureRectangle_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeNoFakePressureRectangle = CardEnableInkToShapeNoFakePressureRectangle.IsOn; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchEnableInkToShapeNoFakePressureTriangle_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeNoFakePressureTriangle = CardEnableInkToShapeNoFakePressureTriangle.IsOn; SettingsManager.SaveSettingsToFile(); } private void ToggleCheckboxEnableInkToShapeTriangle_CheckedChanged(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeTriangle = (bool)ToggleCheckboxEnableInkToShapeTriangle.IsChecked; SettingsManager.SaveSettingsToFile(); } private void ToggleCheckboxEnableInkToShapeRectangle_CheckedChanged(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeRectangle = (bool)ToggleCheckboxEnableInkToShapeRectangle.IsChecked; SettingsManager.SaveSettingsToFile(); } private void ToggleCheckboxEnableInkToShapeRounded_CheckedChanged(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.InkToShape.IsInkToShapeRounded = (bool)ToggleCheckboxEnableInkToShapeRounded.IsChecked; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchAutoStraightenLine_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.Canvas.AutoStraightenLine = ToggleSwitchAutoStraightenLine.IsOn; ExpanderAutoStraightenLine.IsExpanded = ToggleSwitchAutoStraightenLine.IsOn; SettingsManager.SaveSettingsToFile(); } private void AutoStraightenLineThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.Canvas.AutoStraightenLineThreshold = (int)e.NewValue; SettingsManager.SaveSettingsToFile(); } private void LineStraightenSensitivitySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (!_isLoaded) return; var val = Math.Round(LineStraightenSensitivitySlider.Value, 2); LineStraightenSensitivitySlider.Value = val; SettingsManager.Settings.InkToShape.LineStraightenSensitivity = val; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchHighPrecisionLineStraighten_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.Canvas.HighPrecisionLineStraighten = ToggleSwitchHighPrecisionLineStraighten.IsOn; SettingsManager.SaveSettingsToFile(); } private void ToggleSwitchLineEndpointSnapping_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.Canvas.LineEndpointSnapping = ToggleSwitchLineEndpointSnapping.IsOn; ExpanderLineEndpointSnapping.IsExpanded = ToggleSwitchLineEndpointSnapping.IsOn; SettingsManager.SaveSettingsToFile(); } private void LineEndpointSnappingThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (!_isLoaded) return; SettingsManager.Settings.Canvas.LineEndpointSnappingThreshold = (int)e.NewValue; SettingsManager.SaveSettingsToFile(); } } }