From f8252119872c9ac82012ba07e14adbeca99a98c6 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 2 May 2026 16:22:27 +0800 Subject: [PATCH] add:issue #115 --- Ink Canvas/MainWindow_cs/MW_Settings.cs | 1 + Ink Canvas/MainWindow_cs/MW_TouchEvents.cs | 6 ++++-- Ink Canvas/Properties/Strings.resx | 3 +++ Ink Canvas/Resources/Settings.cs | 2 ++ .../Windows/SettingsViews/Pages/InkRecognitionPage.xaml | 9 +++++++++ .../SettingsViews/Pages/InkRecognitionPage.xaml.cs | 8 ++++++++ 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs index 41a6726a..f63ce4d5 100644 --- a/Ink Canvas/MainWindow_cs/MW_Settings.cs +++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs @@ -916,6 +916,7 @@ namespace Ink_Canvas Settings.Canvas.AutoStraightenLine = true; Settings.Canvas.AutoStraightenLineThreshold = 80; Settings.Canvas.PauseStraightenLine = false; + Settings.Canvas.PauseStraightenDelay = 300; Settings.Canvas.LineEndpointSnapping = true; Settings.Canvas.LineEndpointSnappingThreshold = 15; Settings.Canvas.UsingWhiteboard = false; diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index 66a73fc1..b2241eb5 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -1014,10 +1014,11 @@ namespace Ink_Canvas if (_pauseStraightenTimers.TryGetValue(stylusId, out var existing)) { existing.Stop(); + existing.Interval = TimeSpan.FromMilliseconds(Settings.Canvas.PauseStraightenDelay); existing.Start(); return; } - var timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(PauseStraightenDelayMs) }; + var timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(Settings.Canvas.PauseStraightenDelay) }; var capturedId = stylusId; timer.Tick += (s, e) => { @@ -1038,10 +1039,11 @@ namespace Ink_Canvas if (_pauseStraightenTimers.TryGetValue(inkModeId, out var existing)) { existing.Stop(); + existing.Interval = TimeSpan.FromMilliseconds(Settings.Canvas.PauseStraightenDelay); existing.Start(); return; } - var timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(PauseStraightenDelayMs) }; + var timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(Settings.Canvas.PauseStraightenDelay) }; timer.Tick += (s, e) => { timer.Stop(); diff --git a/Ink Canvas/Properties/Strings.resx b/Ink Canvas/Properties/Strings.resx index c617ff81..775c787e 100644 --- a/Ink Canvas/Properties/Strings.resx +++ b/Ink Canvas/Properties/Strings.resx @@ -636,6 +636,9 @@ 书写中停顿时,自动将当前笔画拉直为直线(需同时开启直线自动拉直)。 + + 停顿触发延迟 + 直线端点吸附 diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs index 57c46e52..664a252b 100644 --- a/Ink Canvas/Resources/Settings.cs +++ b/Ink Canvas/Resources/Settings.cs @@ -110,6 +110,8 @@ namespace Ink_Canvas public bool HighPrecisionLineStraighten { get; set; } = true; // 是否启用高精度直线拉直 [JsonProperty("pauseStraightenLine")] public bool PauseStraightenLine { get; set; } = false; // 是否启用停顿拉直(书写中停顿时自动拉直笔画) + [JsonProperty("pauseStraightenDelay")] + public int PauseStraightenDelay { get; set; } = 300; // 停顿拉直触发延迟(毫秒) [JsonProperty("lineEndpointSnapping")] public bool LineEndpointSnapping { get; set; } = true; // 是否启用直线端点吸附 [JsonProperty("lineEndpointSnappingThreshold")] diff --git a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml index 0480b293..d4c43f18 100644 --- a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml +++ b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml @@ -164,6 +164,15 @@ OffContent="{DynamicResource Common_Off}" Toggled="ToggleSwitchPauseStraightenLine_Toggled" /> + + + + + + diff --git a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs index 40653417..eeeff9af 100644 --- a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs @@ -53,6 +53,7 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages AutoStraightenLineThresholdSlider.Value = settings.Canvas.AutoStraightenLineThreshold; ToggleSwitchHighPrecisionLineStraighten.IsOn = settings.Canvas.HighPrecisionLineStraighten; ToggleSwitchPauseStraightenLine.IsOn = settings.Canvas.PauseStraightenLine; + PauseStraightenDelaySlider.Value = settings.Canvas.PauseStraightenDelay; ToggleSwitchLineEndpointSnapping.IsOn = settings.Canvas.LineEndpointSnapping; } } @@ -200,6 +201,13 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages SettingsManager.SaveSettingsToFile(); } + private void PauseStraightenDelaySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) + { + if (!_isLoaded) return; + SettingsManager.Settings.Canvas.PauseStraightenDelay = (int)PauseStraightenDelaySlider.Value; + SettingsManager.SaveSettingsToFile(); + } + private void ToggleSwitchLineEndpointSnapping_Toggled(object sender, RoutedEventArgs e) { if (!_isLoaded) return;