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;