add:有关触屏体验改进的功能

This commit is contained in:
CJK_mkp
2025-06-17 22:05:22 +08:00
parent fa0cbb4d3f
commit 2a23be44f2
8 changed files with 3821 additions and 3683 deletions
+17 -1
View File
@@ -377,6 +377,22 @@
IsOn="True" FontFamily="Microsoft YaHei UI" FontWeight="Bold" IsOn="True" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchShowCursor_Toggled" /> Toggled="ToggleSwitchShowCursor_Toggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="启用压感触屏模式" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchEnablePressureTouchMode"
IsOn="True" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchEnablePressureTouchMode_Toggled" />
</ui:SimpleStackPanel>
<TextBlock Text="# 开启后,触屏设备也将支持压感效果,适用于部分支持压感但无法被系统识别的触屏设备。" TextWrapping="Wrap" Foreground="#a1a1aa" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="屏蔽压感" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchDisablePressure"
IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchDisablePressure_Toggled" />
</ui:SimpleStackPanel>
<TextBlock Text="# 开启后,将忽略所有设备的压感信息,使所有笔画具有统一的粗细。与压感触屏模式互斥。" TextWrapping="Wrap" Foreground="#a1a1aa" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="橡皮大小" VerticalAlignment="Center" <TextBlock Foreground="#fafafa" Text="橡皮大小" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" /> FontSize="14" Margin="0,0,16,0" />
@@ -1845,7 +1861,7 @@
FontSize="14" Margin="0,0,16,0" /> FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchAutoKillIDT" Name="ToggleSwitchAutoKillIDT"
IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold" IsOn="True" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchAutoKillIDT_Toggled" /> Toggled="ToggleSwitchAutoKillIDT_Toggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46" <Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
+31 -1
View File
@@ -694,6 +694,34 @@ namespace Ink_Canvas {
SaveSettingsToFile(); SaveSettingsToFile();
} }
private void ToggleSwitchEnablePressureTouchMode_Toggled(object sender, RoutedEventArgs e) {
if (!isLoaded) return;
Settings.Canvas.EnablePressureTouchMode = ToggleSwitchEnablePressureTouchMode.IsOn;
// 如果启用了压感触屏模式,则自动关闭屏蔽压感
if (Settings.Canvas.EnablePressureTouchMode && Settings.Canvas.DisablePressure) {
Settings.Canvas.DisablePressure = false;
ToggleSwitchDisablePressure.IsOn = false;
}
SaveSettingsToFile();
}
private void ToggleSwitchDisablePressure_Toggled(object sender, RoutedEventArgs e) {
if (!isLoaded) return;
Settings.Canvas.DisablePressure = ToggleSwitchDisablePressure.IsOn;
// 如果启用了屏蔽压感,则自动关闭压感触屏模式
if (Settings.Canvas.DisablePressure && Settings.Canvas.EnablePressureTouchMode) {
Settings.Canvas.EnablePressureTouchMode = false;
ToggleSwitchEnablePressureTouchMode.IsOn = false;
}
SaveSettingsToFile();
}
#endregion #endregion
#region Canvas #region Canvas
@@ -1412,7 +1440,7 @@ namespace Ink_Canvas {
Settings.Automation.IsAutoKillVComYouJiao = false; Settings.Automation.IsAutoKillVComYouJiao = false;
Settings.Automation.IsAutoKillInkCanvas = false; Settings.Automation.IsAutoKillInkCanvas = false;
Settings.Automation.IsAutoKillICA = false; Settings.Automation.IsAutoKillICA = false;
Settings.Automation.IsAutoKillIDT = true; Settings.Automation.IsAutoKillIDT = false;
Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation = false; Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation = false;
Settings.Automation.IsSaveScreenshotsInDateFolders = false; Settings.Automation.IsSaveScreenshotsInDateFolders = false;
Settings.Automation.IsAutoSaveStrokesAtScreenshot = true; Settings.Automation.IsAutoSaveStrokesAtScreenshot = true;
@@ -1447,6 +1475,8 @@ namespace Ink_Canvas {
Settings.Canvas.HideStrokeWhenSelecting = false; Settings.Canvas.HideStrokeWhenSelecting = false;
Settings.Canvas.ClearCanvasAndClearTimeMachine = false; Settings.Canvas.ClearCanvasAndClearTimeMachine = false;
Settings.Canvas.FitToCurve = true; Settings.Canvas.FitToCurve = true;
Settings.Canvas.EnablePressureTouchMode = false;
Settings.Canvas.DisablePressure = false;
Settings.Canvas.UsingWhiteboard = false; Settings.Canvas.UsingWhiteboard = false;
Settings.Canvas.HyperbolaAsymptoteOption = 0; Settings.Canvas.HyperbolaAsymptoteOption = 0;
@@ -434,6 +434,12 @@ namespace Ink_Canvas {
inkCanvas.ForceCursor = false; inkCanvas.ForceCursor = false;
} }
// 初始化压感触屏模式开关状态
ToggleSwitchEnablePressureTouchMode.IsOn = Settings.Canvas.EnablePressureTouchMode;
// 初始化屏蔽压感开关状态
ToggleSwitchDisablePressure.IsOn = Settings.Canvas.DisablePressure;
ComboBoxPenStyle.SelectedIndex = Settings.Canvas.InkStyle; ComboBoxPenStyle.SelectedIndex = Settings.Canvas.InkStyle;
BoardComboBoxPenStyle.SelectedIndex = Settings.Canvas.InkStyle; BoardComboBoxPenStyle.SelectedIndex = Settings.Canvas.InkStyle;
@@ -19,7 +19,7 @@ namespace Ink_Canvas {
try { try {
inkCanvas.Opacity = 1; inkCanvas.Opacity = 1;
if (Settings.InkToShape.IsInkToShapeEnabled && !Environment.Is64BitProcess) { if (Settings.InkToShape.IsInkToShapeEnabled && drawingShapeMode == 0 && !isInMultiTouchMode && penType == 0) {
void InkToShapeProcess() { void InkToShapeProcess() {
try { try {
newStrokes.Add(e.Stroke); newStrokes.Add(e.Stroke);
@@ -320,13 +320,27 @@ namespace Ink_Canvas {
InkToShapeProcess(); InkToShapeProcess();
} }
foreach (var stylusPoint in e.Stroke.StylusPoints) // 如果启用了屏蔽压感功能,强制所有点的压感值为0.5
//LogHelper.WriteLogToFile(stylusPoint.PressureFactor.ToString(), LogHelper.LogType.Info); if (Settings.Canvas.DisablePressure) {
// 检查是否是压感笔书写 var stylusPoints = new StylusPointCollection();
//if (stylusPoint.PressureFactor != 0.5 && stylusPoint.PressureFactor != 0) foreach (var point in e.Stroke.StylusPoints) {
if ((stylusPoint.PressureFactor > 0.501 || stylusPoint.PressureFactor < 0.5) && var newPoint = new StylusPoint(point.X, point.Y, 0.5f);
stylusPoint.PressureFactor != 0) stylusPoints.Add(newPoint);
return; }
e.Stroke.StylusPoints = stylusPoints;
return; // 跳过后续的压感处理
}
// 检查是否是压感笔书写,如果启用了压感触屏模式则跳过此检查
if (!Settings.Canvas.EnablePressureTouchMode) {
foreach (var stylusPoint in e.Stroke.StylusPoints)
//LogHelper.WriteLogToFile(stylusPoint.PressureFactor.ToString(), LogHelper.LogType.Info);
// 检查是否是压感笔书写
//if (stylusPoint.PressureFactor != 0.5 && stylusPoint.PressureFactor != 0)
if ((stylusPoint.PressureFactor > 0.501 || stylusPoint.PressureFactor < 0.5) &&
stylusPoint.PressureFactor != 0)
return;
}
try { try {
if (e.Stroke.StylusPoints.Count > 3) { if (e.Stroke.StylusPoints.Count > 3) {
+5 -1
View File
@@ -48,6 +48,10 @@ namespace Ink_Canvas
public bool FitToCurve { get; set; } = true; public bool FitToCurve { get; set; } = true;
[JsonProperty("clearCanvasAndClearTimeMachine")] [JsonProperty("clearCanvasAndClearTimeMachine")]
public bool ClearCanvasAndClearTimeMachine { get; set; } = false; public bool ClearCanvasAndClearTimeMachine { get; set; } = false;
[JsonProperty("enablePressureTouchMode")]
public bool EnablePressureTouchMode { get; set; } = false; // 是否启用压感触屏模式
[JsonProperty("disablePressure")]
public bool DisablePressure { get; set; } = false; // 是否屏蔽压感
[JsonProperty("usingWhiteboard")] [JsonProperty("usingWhiteboard")]
public bool UsingWhiteboard { get; set; } public bool UsingWhiteboard { get; set; }
@@ -308,7 +312,7 @@ namespace Ink_Canvas
public bool IsAutoKillICA { get; set; } = false; public bool IsAutoKillICA { get; set; } = false;
[JsonProperty("isAutoKillIDT")] [JsonProperty("isAutoKillIDT")]
public bool IsAutoKillIDT { get; set; } = true; public bool IsAutoKillIDT { get; set; } = false;
[JsonProperty("isSaveScreenshotsInDateFolders")] [JsonProperty("isSaveScreenshotsInDateFolders")]
public bool IsSaveScreenshotsInDateFolders { get; set; } = false; public bool IsSaveScreenshotsInDateFolders { get; set; } = false;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff