fix:墨迹出现在不对应的PPT文档上
This commit is contained in:
@@ -55,6 +55,13 @@ namespace Ink_Canvas.Helpers
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// 完全清理之前的墨迹状态
|
||||||
|
ClearAllStrokes();
|
||||||
|
|
||||||
|
// 重置墨迹锁定状态
|
||||||
|
_inkLockUntil = DateTime.MinValue;
|
||||||
|
_lockedSlideIndex = -1;
|
||||||
|
|
||||||
// 生成演示文稿唯一标识符
|
// 生成演示文稿唯一标识符
|
||||||
_currentPresentationId = GeneratePresentationId(presentation);
|
_currentPresentationId = GeneratePresentationId(presentation);
|
||||||
|
|
||||||
@@ -152,17 +159,28 @@ namespace Ink_Canvas.Helpers
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 如果有当前墨迹,先保存
|
// 如果有当前墨迹,先保存到正确的页面
|
||||||
if (currentStrokes != null && currentStrokes.Count > 0)
|
if (currentStrokes != null && currentStrokes.Count > 0)
|
||||||
{
|
{
|
||||||
SaveCurrentSlideStrokes(_lockedSlideIndex > 0 ? _lockedSlideIndex : slideIndex, currentStrokes);
|
// 确定要保存的页面索引
|
||||||
|
int saveToSlideIndex = _lockedSlideIndex > 0 ? _lockedSlideIndex : slideIndex;
|
||||||
|
|
||||||
|
// 确保页面索引有效
|
||||||
|
if (saveToSlideIndex > 0 && saveToSlideIndex < _memoryStreams.Length)
|
||||||
|
{
|
||||||
|
SaveCurrentSlideStrokes(saveToSlideIndex, currentStrokes);
|
||||||
|
LogHelper.WriteLogToFile($"已保存第{saveToSlideIndex}页墨迹,墨迹数量: {currentStrokes.Count}", LogHelper.LogType.Trace);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置墨迹锁定
|
// 设置墨迹锁定
|
||||||
LockInkForSlide(slideIndex);
|
LockInkForSlide(slideIndex);
|
||||||
|
|
||||||
// 加载新页面的墨迹
|
// 加载新页面的墨迹
|
||||||
return LoadSlideStrokes(slideIndex);
|
var newStrokes = LoadSlideStrokes(slideIndex);
|
||||||
|
LogHelper.WriteLogToFile($"已切换到第{slideIndex}页,加载墨迹数量: {newStrokes.Count}", LogHelper.LogType.Trace);
|
||||||
|
|
||||||
|
return newStrokes;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -200,6 +200,15 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
Application.Current.Dispatcher.InvokeAsync(() =>
|
Application.Current.Dispatcher.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
|
// 在初始化墨迹管理器之前,先清理画布上的所有墨迹
|
||||||
|
ClearStrokes(true);
|
||||||
|
|
||||||
|
// 清理备份历史记录,防止旧演示文稿的墨迹影响新演示文稿
|
||||||
|
if (TimeMachineHistories != null && TimeMachineHistories.Length > 0)
|
||||||
|
{
|
||||||
|
TimeMachineHistories[0] = null;
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化墨迹管理器
|
// 初始化墨迹管理器
|
||||||
_pptInkManager?.InitializePresentation(pres);
|
_pptInkManager?.InitializePresentation(pres);
|
||||||
|
|
||||||
@@ -219,6 +228,8 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
|
|
||||||
_pptUIManager?.UpdateConnectionStatus(true);
|
_pptUIManager?.UpdateConnectionStatus(true);
|
||||||
|
|
||||||
|
LogHelper.WriteLogToFile($"已打开新演示文稿: {pres.Name},墨迹状态已清理", LogHelper.LogType.Event);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
Reference in New Issue
Block a user