From 879dfcea28fffc6a3cb1a5d136b105d74fee1307 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 13 Sep 2025 19:10:40 +0800 Subject: [PATCH] add:issue #190 --- Ink Canvas/Helpers/PPTInkManager.cs | 26 -------------------------- Ink Canvas/MainWindow_cs/MW_PPT.cs | 13 ++++++++++++- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/Ink Canvas/Helpers/PPTInkManager.cs b/Ink Canvas/Helpers/PPTInkManager.cs index f8c3f558..e6cee093 100644 --- a/Ink Canvas/Helpers/PPTInkManager.cs +++ b/Ink Canvas/Helpers/PPTInkManager.cs @@ -204,32 +204,6 @@ namespace Ink_Canvas.Helpers return LoadSlideStrokes(slideIndex); } - // 如果有当前墨迹,先保存到正确的页面 - if (currentStrokes != null && currentStrokes.Count > 0) - { - // 否则使用传入的页面索引,确保墨迹保存到正确的页面 - int saveToSlideIndex; - if (_lockedSlideIndex > 0 && DateTime.Now < _inkLockUntil && _lockedSlideIndex != slideIndex) - { - saveToSlideIndex = _lockedSlideIndex; - LogHelper.WriteLogToFile($"使用锁定页面保存墨迹: {saveToSlideIndex} -> {slideIndex}", LogHelper.LogType.Trace); - } - else - { - saveToSlideIndex = slideIndex; - } - - // 确保页面索引有效 - if (saveToSlideIndex > 0 && saveToSlideIndex < _memoryStreams.Length) - { - SaveCurrentSlideStrokes(saveToSlideIndex, currentStrokes); - LogHelper.WriteLogToFile($"已保存第{saveToSlideIndex}页墨迹,墨迹数量: {currentStrokes.Count}", LogHelper.LogType.Trace); - } - else - { - LogHelper.WriteLogToFile($"页面索引无效,无法保存墨迹: {saveToSlideIndex}", LogHelper.LogType.Warning); - } - } // 设置墨迹锁定 LockInkForSlide(slideIndex); diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 01d0dd7c..5b154fce 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -1096,7 +1096,18 @@ namespace Ink_Canvas { try { - var newStrokes = _multiPPTInkManager?.SwitchToSlide(newSlideIndex, inkCanvas.Strokes); + // 获取当前页面索引 + var currentSlideIndex = _pptManager?.GetCurrentSlideNumber() ?? 0; + + // 如果有当前墨迹且不是第一次切换,先保存到当前页面 + if (inkCanvas.Strokes.Count > 0 && currentSlideIndex > 0 && currentSlideIndex != newSlideIndex) + { + _multiPPTInkManager?.SaveCurrentSlideStrokes(currentSlideIndex, inkCanvas.Strokes); + LogHelper.WriteLogToFile($"切换前保存第{currentSlideIndex}页墨迹,墨迹数量: {inkCanvas.Strokes.Count}", LogHelper.LogType.Trace); + } + + // 切换到新页面并加载墨迹 + var newStrokes = _multiPPTInkManager?.SwitchToSlide(newSlideIndex, null); if (newStrokes != null) { inkCanvas.Strokes.Clear();