diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 10a77f89..7c44f0fb 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -640,63 +640,7 @@
Padding="15,5" Margin="0,10,0,0"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
- /// 处理笔尖模式开关状态更改事件
- ///
- /// 事件发送者
- /// 路由事件参数
- ///
- /// 当笔尖模式开关状态更改时:
- /// 1. 同步更新两个笔尖模式开关的状态
- /// 2. 保存笔尖模式设置
- /// 3. 根据笔尖模式设置更新边界宽度
- ///
private void ToggleSwitchEnableNibMode_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -2653,13 +2642,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
- private void ToggleSwitchAutoSwitchTwoFingerGesture_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Gesture.AutoSwitchTwoFingerGesture = ToggleSwitchAutoSwitchTwoFingerGesture.IsOn;
- SaveSettingsToFile();
- }
-
private void ToggleSwitchEnableTwoFingerZoom_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -2718,8 +2700,7 @@ namespace Ink_Canvas
palmEraserWasEnabledBeforeMultiTouch = Settings.Canvas.EnablePalmEraser;
Settings.Canvas.EnablePalmEraser = false;
- if (ToggleSwitchEnablePalmEraser != null)
- ToggleSwitchEnablePalmEraser.IsOn = false;
+ SaveSettingsToFile();
// 恢复到之前的编辑状态
inkCanvas.EditingMode = currentEditingMode;
@@ -2754,8 +2735,7 @@ namespace Ink_Canvas
if (palmEraserWasEnabledBeforeMultiTouch)
{
Settings.Canvas.EnablePalmEraser = true;
- if (ToggleSwitchEnablePalmEraser != null)
- ToggleSwitchEnablePalmEraser.IsOn = true;
+ SaveSettingsToFile();
}
// 恢复到之前的编辑状态
@@ -2840,7 +2820,6 @@ namespace Ink_Canvas
else
ToggleSwitchEnableTwoFingerRotation.IsOn = BoardToggleSwitchEnableTwoFingerRotation.IsOn;
Settings.Gesture.IsEnableTwoFingerRotation = ToggleSwitchEnableTwoFingerRotation.IsOn;
- Settings.Gesture.IsEnableTwoFingerRotationOnSelection = ToggleSwitchEnableTwoFingerRotationOnSelection.IsOn;
CheckEnableTwoFingerGestureBtnColorPrompt();
SaveSettingsToFile();
}
@@ -4247,13 +4226,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
- private void ToggleSwitchEnablePalmEraser_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Canvas.EnablePalmEraser = ToggleSwitchEnablePalmEraser.IsOn;
- SaveSettingsToFile();
- }
-
#region 底部按钮水平位置控制
private void PPTButtonLBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
@@ -4357,13 +4329,6 @@ namespace Ink_Canvas
#endregion
- private void ComboBoxPalmEraserSensitivity_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Canvas.PalmEraserSensitivity = ComboBoxPalmEraserSensitivity.SelectedIndex;
- SaveSettingsToFile();
- }
-
#region 文件关联管理
private void BtnUnregisterFileAssociation_Click(object sender, RoutedEventArgs e)
diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
index 402f042a..1ed3fcd9 100644
--- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
+++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
@@ -231,25 +231,21 @@ namespace Ink_Canvas
else
{
Settings.Startup = new Startup();
- Settings.Startup.IsEnableNibMode = false; // 默认关闭笔尖模式
- ToggleSwitchEnableNibMode.IsOn = false; // 默认关闭笔尖模式
- BoardToggleSwitchEnableNibMode.IsOn = false; // 默认关闭笔尖模式
- BoundsWidth = Settings.Advanced.FingerModeBoundsWidth; // 使用手指模式边界宽度
+ Settings.Startup.IsEnableNibMode = false;
+ ToggleSwitchEnableNibMode.IsOn = false;
+ BoardToggleSwitchEnableNibMode.IsOn = false;
+ BoundsWidth = Settings.Advanced.FingerModeBoundsWidth;
}
- // 恢复崩溃后操作设置
if (Settings.Startup != null)
{
- // 恢复崩溃后操作选项
if (Settings.Startup.CrashAction == 0)
{
App.CrashAction = App.CrashActionType.SilentRestart;
- if (RadioCrashSilentRestart != null) RadioCrashSilentRestart.IsChecked = true;
}
else
{
App.CrashAction = App.CrashActionType.NoAction;
- if (RadioCrashNoAction != null) RadioCrashNoAction.IsChecked = true;
}
}
@@ -658,13 +654,6 @@ namespace Ink_Canvas
ToggleSwitchEnableTwoFingerRotation.IsOn = Settings.Gesture.IsEnableTwoFingerRotation;
BoardToggleSwitchEnableTwoFingerRotation.IsOn = Settings.Gesture.IsEnableTwoFingerRotation;
- ToggleSwitchAutoSwitchTwoFingerGesture.IsOn = Settings.Gesture.AutoSwitchTwoFingerGesture;
-
- ToggleSwitchEnableTwoFingerRotation.IsOn = Settings.Gesture.IsEnableTwoFingerRotation;
-
- ToggleSwitchEnableTwoFingerRotationOnSelection.IsOn =
- Settings.Gesture.IsEnableTwoFingerRotationOnSelection;
-
if (Settings.Gesture.AutoSwitchTwoFingerGesture)
{
if (Topmost)
@@ -855,13 +844,6 @@ namespace Ink_Canvas
Settings.Canvas = new Canvas();
}
- // Palm Eraser
- if (Settings.Canvas != null)
- {
- ToggleSwitchEnablePalmEraser.IsOn = Settings.Canvas.EnablePalmEraser;
- ComboBoxPalmEraserSensitivity.SelectedIndex = Settings.Canvas.PalmEraserSensitivity;
- }
-
// Advanced
if (Settings.Advanced != null)
{
diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs
index dc70ea42..824325a8 100644
--- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs
+++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs
@@ -233,8 +233,7 @@ namespace Ink_Canvas
if (palmEraserWasEnabledBeforeMultiTouch)
{
Settings.Canvas.EnablePalmEraser = true;
- if (ToggleSwitchEnablePalmEraser != null)
- ToggleSwitchEnablePalmEraser.IsOn = true;
+ SaveSettingsToFile();
}
}
else
@@ -259,8 +258,7 @@ namespace Ink_Canvas
palmEraserWasEnabledBeforeMultiTouch = Settings.Canvas.EnablePalmEraser;
Settings.Canvas.EnablePalmEraser = false;
- if (ToggleSwitchEnablePalmEraser != null)
- ToggleSwitchEnablePalmEraser.IsOn = false;
+ SaveSettingsToFile();
}
}
diff --git a/Ink Canvas/Properties/Strings.en-US.resx b/Ink Canvas/Properties/Strings.en-US.resx
index b3925094..7aecff4a 100644
--- a/Ink Canvas/Properties/Strings.en-US.resx
+++ b/Ink Canvas/Properties/Strings.en-US.resx
@@ -987,8 +987,14 @@
Control via icc:// protocol
+
+ Nib Mode
+
+
+ Only respond to pen tip touch, ignore palm and finger
+
- Canvas and ink
+ Canvas
Show pen cursor
diff --git a/Ink Canvas/Properties/Strings.resx b/Ink Canvas/Properties/Strings.resx
index 06222a0f..b1d1e256 100644
--- a/Ink Canvas/Properties/Strings.resx
+++ b/Ink Canvas/Properties/Strings.resx
@@ -1029,8 +1029,14 @@
通过 icc:// 协议从外部控制软件
+
+ 笔尖模式
+
+
+ 启用后仅响应笔尖触摸,忽略手掌和手指
+
- 画板和墨迹
+ 画板
显示画笔光标
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml
index 3a5107e6..2f7ddf46 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml
+++ b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml
@@ -140,20 +140,25 @@
SwitchName="ToggleSwitchEnableInkFade"
Toggled="ToggleSwitchEnableInkFade_Toggled" />
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
index fa4e1be8..fa60d7a7 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
@@ -1,4 +1,3 @@
-using Ink_Canvas.Helpers;
using Ink_Canvas.Windows.SettingsViews.Helpers;
using System;
using System.Diagnostics;
@@ -57,26 +56,18 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
BrushAutoRestoreAlphaSlider.Value = settings.Canvas.BrushAutoRestoreAlpha;
CardEnableEraserAutoSwitchBack.IsOn = settings.Canvas.EnableEraserAutoSwitchBack;
EraserAutoSwitchBackDelaySlider.Value = settings.Canvas.EraserAutoSwitchBackDelaySeconds;
- CardAutoStraightenLine.IsOn = settings.Canvas.AutoStraightenLine;
- AutoStraightenLineThresholdSlider.Value = settings.Canvas.AutoStraightenLineThreshold;
- CardHighPrecisionLineStraighten.IsOn = settings.Canvas.HighPrecisionLineStraighten;
- CardLineEndpointSnapping.IsOn = settings.Canvas.LineEndpointSnapping;
}
- if (settings.InkToShape != null)
+ if (settings.Gesture != 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;
+ CardAutoSwitchTwoFingerGesture.IsOn = settings.Gesture.AutoSwitchTwoFingerGesture;
+ CardEnableTwoFingerRotationOnSelection.IsOn = settings.Gesture.IsEnableTwoFingerRotationOnSelection;
+ }
+
+ if (settings.Canvas != null)
+ {
+ CardEnablePalmEraser.IsOn = settings.Canvas.EnablePalmEraser;
+ ComboBoxPalmEraserSensitivity.SelectedIndex = settings.Canvas.PalmEraserSensitivity;
}
}
catch (Exception ex)
@@ -108,8 +99,6 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
}
}
- #region 画板设置事件处理
-
private void ToggleSwitchShowCursor_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
@@ -295,111 +284,32 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
SettingsManager.SaveSettingsToFile();
}
- #endregion
-
- #region 墨迹识别事件处理
-
- private void ToggleSwitchEnableInkToShape_Toggled(object sender, RoutedEventArgs e)
+ private void ToggleSwitchAutoSwitchTwoFingerGesture_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
- SettingsManager.Settings.InkToShape.IsInkToShapeEnabled = CardEnableInkToShape.IsOn;
+ SettingsManager.Settings.Gesture.AutoSwitchTwoFingerGesture = CardAutoSwitchTwoFingerGesture.IsOn;
SettingsManager.SaveSettingsToFile();
}
- 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)
+ private void ToggleSwitchEnableTwoFingerRotationOnSelection_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
- SettingsManager.Settings.InkToShape.EnableWinRtHandwritingStrokeBeautify = CardEnableWinRtHandwritingStrokeBeautify.IsOn;
+ SettingsManager.Settings.Gesture.IsEnableTwoFingerRotationOnSelection = CardEnableTwoFingerRotationOnSelection.IsOn;
SettingsManager.SaveSettingsToFile();
}
- private void ToggleSwitchEnableInkToShapeNoFakePressureRectangle_Toggled(object sender, RoutedEventArgs e)
+ private void ToggleSwitchEnablePalmEraser_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
- SettingsManager.Settings.InkToShape.IsInkToShapeNoFakePressureRectangle = CardEnableInkToShapeNoFakePressureRectangle.IsOn;
+ SettingsManager.Settings.Canvas.EnablePalmEraser = CardEnablePalmEraser.IsOn;
SettingsManager.SaveSettingsToFile();
}
- private void ToggleSwitchEnableInkToShapeNoFakePressureTriangle_Toggled(object sender, RoutedEventArgs e)
+ private void ComboBoxPalmEraserSensitivity_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!_isLoaded) return;
- SettingsManager.Settings.InkToShape.IsInkToShapeNoFakePressureTriangle = CardEnableInkToShapeNoFakePressureTriangle.IsOn;
+ SettingsManager.Settings.Canvas.PalmEraserSensitivity = ComboBoxPalmEraserSensitivity.SelectedIndex;
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 = CardAutoStraightenLine.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;
- SettingsManager.Settings.InkToShape.LineStraightenSensitivity = e.NewValue;
- SettingsManager.SaveSettingsToFile();
- }
-
- private void ToggleSwitchHighPrecisionLineStraighten_Toggled(object sender, RoutedEventArgs e)
- {
- if (!_isLoaded) return;
- SettingsManager.Settings.Canvas.HighPrecisionLineStraighten = CardHighPrecisionLineStraighten.IsOn;
- SettingsManager.SaveSettingsToFile();
- }
-
- private void ToggleSwitchLineEndpointSnapping_Toggled(object sender, RoutedEventArgs e)
- {
- if (!_isLoaded) return;
- SettingsManager.Settings.Canvas.LineEndpointSnapping = CardLineEndpointSnapping.IsOn;
- SettingsManager.SaveSettingsToFile();
- }
-
- private void LineEndpointSnappingThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
- {
- if (!_isLoaded) return;
- SettingsManager.Settings.Canvas.LineEndpointSnappingThreshold = (int)e.NewValue;
- SettingsManager.SaveSettingsToFile();
- }
-
- #endregion
}
}
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/HomePage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/HomePage.xaml
index 90bf28f8..55eb9e80 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/HomePage.xaml
+++ b/Ink Canvas/Windows/SettingsViews/Pages/HomePage.xaml
@@ -71,13 +71,20 @@
-
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml
new file mode 100644
index 00000000..a061cd42
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml
@@ -0,0 +1,174 @@
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs
new file mode 100644
index 00000000..029cef07
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs
@@ -0,0 +1,166 @@
+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)
+ {
+ CardAutoStraightenLine.IsOn = settings.Canvas.AutoStraightenLine;
+ AutoStraightenLineThresholdSlider.Value = settings.Canvas.AutoStraightenLineThreshold;
+ CheckboxHighPrecisionLineStraighten.IsChecked = settings.Canvas.HighPrecisionLineStraighten;
+ CardLineEndpointSnapping.IsOn = settings.Canvas.LineEndpointSnapping;
+ }
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine($"加载墨迹纠正设置时出错: {ex.Message}");
+ }
+
+ _isLoaded = true;
+ }
+
+ private void ToggleSwitchEnableInkToShape_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.InkToShape.IsInkToShapeEnabled = CardEnableInkToShape.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ 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 = CardAutoStraightenLine.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;
+ SettingsManager.Settings.InkToShape.LineStraightenSensitivity = e.NewValue;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void CheckboxHighPrecisionLineStraighten_CheckedChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Canvas.HighPrecisionLineStraighten = (bool)CheckboxHighPrecisionLineStraighten.IsChecked;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchLineEndpointSnapping_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Canvas.LineEndpointSnapping = CardLineEndpointSnapping.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void LineEndpointSnappingThresholdSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Canvas.LineEndpointSnappingThreshold = (int)e.NewValue;
+ SettingsManager.SaveSettingsToFile();
+ }
+ }
+}
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
index 96b262e4..71e5765c 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
+++ b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
@@ -69,6 +69,36 @@
SwitchName="ToggleSwitchPPTOnlyMode"
Toggled="ToggleSwitchPPTOnlyMode_Toggled" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml.cs
index e24f70cc..5b582560 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml.cs
@@ -3,6 +3,7 @@ using Ink_Canvas.Windows.SettingsViews.Helpers;
using System;
using System.Diagnostics;
using System.Windows;
+using System.Windows.Controls;
namespace Ink_Canvas.Windows.SettingsViews.Pages
{
@@ -44,6 +45,20 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
}
CardExternalProtocol.IsOn = settings.Advanced.IsEnableUriScheme;
+
+ if (settings.Startup != null)
+ {
+ CardEnableNibMode.IsOn = settings.Startup.IsEnableNibMode;
+
+ if (settings.Startup.CrashAction == 0)
+ {
+ RadioCrashSilentRestart.IsChecked = true;
+ }
+ else
+ {
+ RadioCrashNoAction.IsChecked = true;
+ }
+ }
}
catch (Exception ex)
{
@@ -151,6 +166,70 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
#endregion
+ #region 笔尖模式事件处理
+
+ private void ToggleSwitchEnableNibMode_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+
+ try
+ {
+ bool newState = CardEnableNibMode.IsOn;
+ SettingsManager.Settings.Startup.IsEnableNibMode = newState;
+
+ var window = Application.Current.MainWindow;
+ if (window is MainWindow mw)
+ {
+ if (mw.ToggleSwitchEnableNibMode != null)
+ mw.ToggleSwitchEnableNibMode.IsOn = newState;
+ if (mw.BoardToggleSwitchEnableNibMode != null)
+ mw.BoardToggleSwitchEnableNibMode.IsOn = newState;
+
+ if (newState)
+ mw.BoundsWidth = SettingsManager.Settings.Advanced.NibModeBoundsWidth;
+ else
+ mw.BoundsWidth = SettingsManager.Settings.Advanced.FingerModeBoundsWidth;
+ }
+
+ SettingsManager.SaveSettingsToFile();
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine($"设置笔尖模式时出错: {ex.Message}");
+ }
+ }
+
+ #endregion
+
+ #region 崩溃后操作事件处理
+
+ private void RadioCrashAction_Checked(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+
+ try
+ {
+ if (RadioCrashSilentRestart != null && RadioCrashSilentRestart.IsChecked == true)
+ {
+ App.CrashAction = App.CrashActionType.SilentRestart;
+ SettingsManager.Settings.Startup.CrashAction = 0;
+ }
+ else if (RadioCrashNoAction != null && RadioCrashNoAction.IsChecked == true)
+ {
+ App.CrashAction = App.CrashActionType.NoAction;
+ SettingsManager.Settings.Startup.CrashAction = 1;
+ }
+ SettingsManager.SaveSettingsToFile();
+ App.SyncCrashActionFromSettings();
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine($"设置崩溃操作时出错: {ex.Message}");
+ }
+ }
+
+ #endregion
+
#region 模式设置事件处理
private void ToggleSwitchPPTOnlyMode_Toggled(object sender, RoutedEventArgs e)
diff --git a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
index 4e152651..1d8c4941 100644
--- a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
+++ b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
@@ -205,10 +205,31 @@
x:Name="CanvasPageItem"
Content="画板"
Tag="CanvasPage"
+ SelectsOnInvoked="True"
ToolTipService.ToolTip="画板与墨迹设置">
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs
index c4530740..de50c779 100644
--- a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml.cs
@@ -43,6 +43,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{ "UpdatePage", typeof(UpdatePage) },
{ "ExperimentalPage", typeof(ExperimentalPage) },
{ "CanvasPage", typeof(CanvasPage) },
+ { "InkRecognitionPage", typeof(InkRecognitionPage) },
{ "DebugPage", typeof(IconographyPage) },
{ "AboutPage", typeof(AboutPage) },
{ "Settings", typeof(SettingsPage) },