From cd90490b8d9095f0f2c2b3a53f37838645c5d607 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 20 Sep 2025 12:15:21 +0800 Subject: [PATCH] fix:issue #210 --- Ink Canvas/MainWindow_cs/MW_BoardControls.cs | 51 ++++++++++++++++++- .../MainWindow_cs/MW_FloatingBarIcons.cs | 7 +-- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs index 07b8d8bc..e4262503 100644 --- a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs +++ b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs @@ -15,10 +15,10 @@ namespace Ink_Canvas private StrokeCollection[] strokeCollections = new StrokeCollection[101]; private bool[] whiteboadLastModeIsRedo = new bool[101]; private StrokeCollection lastTouchDownStrokeCollection = new StrokeCollection(); - private int CurrentWhiteboardIndex = 1; private int WhiteboardTotalCount = 1; - private TimeMachineHistory[][] TimeMachineHistories = new TimeMachineHistory[101][]; //最多99页,0用来存储非白板时的墨迹以便还原 + private TimeMachineHistory[][] TimeMachineHistories = new TimeMachineHistory[101][]; + private bool[] savedMultiTouchModeStates = new bool[101]; // 保存每页白板图片信息 private void SaveStrokes(bool isBackupMain = false) @@ -97,6 +97,8 @@ namespace Ink_Canvas { var timeMachineHistory = timeMachine.ExportTimeMachineHistory(); TimeMachineHistories[0] = timeMachineHistory; + // 保存多指书写模式状态 + savedMultiTouchModeStates[0] = isInMultiTouchMode; timeMachine.ClearStrokeHistory(); @@ -105,6 +107,8 @@ namespace Ink_Canvas { var timeMachineHistory = timeMachine.ExportTimeMachineHistory(); TimeMachineHistories[CurrentWhiteboardIndex] = timeMachineHistory; + // 保存多指书写模式状态 + savedMultiTouchModeStates[CurrentWhiteboardIndex] = isInMultiTouchMode; timeMachine.ClearStrokeHistory(); @@ -161,12 +165,16 @@ namespace Ink_Canvas { timeMachine.ImportTimeMachineHistory(TimeMachineHistories[0]); foreach (var item in TimeMachineHistories[0]) ApplyHistoryToCanvas(item); + // 恢复多指书写模式状态 + RestoreMultiTouchModeState(0); } else { timeMachine.ImportTimeMachineHistory(TimeMachineHistories[CurrentWhiteboardIndex]); // 通过时间机器历史恢复所有内容(墨迹和图片) foreach (var item in TimeMachineHistories[CurrentWhiteboardIndex]) ApplyHistoryToCanvas(item); + // 恢复多指书写模式状态 + RestoreMultiTouchModeState(CurrentWhiteboardIndex); } @@ -177,6 +185,45 @@ namespace Ink_Canvas } } + /// + /// 恢复多指书写模式状态 + /// + private void RestoreMultiTouchModeState(int pageIndex) + { + try + { + // 检查是否保存了多指书写模式状态 + if (savedMultiTouchModeStates[pageIndex]) + { + // 恢复多指书写模式 + EnterMultiTouchModeIfNeeded(); + + // 更新UI状态 + if (ToggleSwitchEnableMultiTouchMode != null) + { + ToggleSwitchEnableMultiTouchMode.IsOn = true; + } + + LogHelper.WriteLogToFile($"恢复多指书写模式状态 - 页面索引: {pageIndex}", LogHelper.LogType.Info); + } + else + { + // 确保多指书写模式关闭 + ExitMultiTouchModeIfNeeded(); + + // 更新UI状态 + if (ToggleSwitchEnableMultiTouchMode != null) + { + ToggleSwitchEnableMultiTouchMode.IsOn = false; + } + } + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"恢复多指书写模式状态失败: {ex.Message}", LogHelper.LogType.Error); + } + } + private async void BtnWhiteBoardPageIndex_Click(object sender, EventArgs e) { if (sender == BtnLeftPageListWB) diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 44495fc7..c3f1521a 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -2750,12 +2750,7 @@ namespace Ink_Canvas { // 清空触摸点计数器 dec.Clear(); - - // 重置多指触摸模式状态 - if (isInMultiTouchMode) - { - isInMultiTouchMode = false; - } + // 重置单指拖动模式状态 if (isSingleFingerDragMode)