fix:issue #94
This commit is contained in:
@@ -941,6 +941,10 @@ namespace Ink_Canvas {
|
|||||||
private int previousSlideID = 0;
|
private int previousSlideID = 0;
|
||||||
private MemoryStream[] memoryStreams = new MemoryStream[50];
|
private MemoryStream[] memoryStreams = new MemoryStream[50];
|
||||||
|
|
||||||
|
private DateTime inkLockUntil = DateTime.MinValue;
|
||||||
|
private int lockedSlideIndex = 0;
|
||||||
|
private const int InkLockMilliseconds = 500;
|
||||||
|
|
||||||
private void PptApplication_SlideShowNextSlide(SlideShowWindow Wn) {
|
private void PptApplication_SlideShowNextSlide(SlideShowWindow Wn) {
|
||||||
try {
|
try {
|
||||||
// 添加安全检查
|
// 添加安全检查
|
||||||
@@ -969,6 +973,7 @@ namespace Ink_Canvas {
|
|||||||
PPTBtnPageNow.Text = $"{Wn.View.CurrentShowPosition}";
|
PPTBtnPageNow.Text = $"{Wn.View.CurrentShowPosition}";
|
||||||
PPTBtnPageTotal.Text = $"/ {Wn.Presentation.Slides.Count}";
|
PPTBtnPageTotal.Text = $"/ {Wn.Presentation.Slides.Count}";
|
||||||
previousSlideID = newPage; // 最后赋值,确保索引同步
|
previousSlideID = newPage; // 最后赋值,确保索引同步
|
||||||
|
LockInkForCurrentSlide(newPage); // 翻页后加锁
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
@@ -1010,6 +1015,7 @@ namespace Ink_Canvas {
|
|||||||
slideShowWindow.View.CurrentShowPosition);
|
slideShowWindow.View.CurrentShowPosition);
|
||||||
slideShowWindow.Activate();
|
slideShowWindow.Activate();
|
||||||
slideShowWindow.View.Previous();
|
slideShowWindow.View.Previous();
|
||||||
|
LockInkForCurrentSlide(slideShowWindow.View.CurrentShowPosition); // 翻页后加锁
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1056,6 +1062,7 @@ namespace Ink_Canvas {
|
|||||||
slideShowWindow.View.CurrentShowPosition);
|
slideShowWindow.View.CurrentShowPosition);
|
||||||
slideShowWindow.Activate();
|
slideShowWindow.Activate();
|
||||||
slideShowWindow.View.Next();
|
slideShowWindow.View.Next();
|
||||||
|
LockInkForCurrentSlide(slideShowWindow.View.CurrentShowPosition); // 翻页后加锁
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2113,10 +2120,16 @@ namespace Ink_Canvas {
|
|||||||
var slideShowWindow = pptApplication.SlideShowWindows[1];
|
var slideShowWindow = pptApplication.SlideShowWindows[1];
|
||||||
if (slideShowWindow != null && slideShowWindow.View != null)
|
if (slideShowWindow != null && slideShowWindow.View != null)
|
||||||
{
|
{
|
||||||
|
int currentSlide = slideShowWindow.View.CurrentShowPosition;
|
||||||
|
if (!CanWriteInk(currentSlide))
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"墨迹写入被锁定或页码不符,当前页:{currentSlide},锁定页:{lockedSlideIndex}", LogHelper.LogType.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
inkCanvas.Strokes.Save(ms);
|
inkCanvas.Strokes.Save(ms);
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
memoryStreams[slideShowWindow.View.CurrentShowPosition] = ms;
|
memoryStreams[currentSlide] = ms;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2125,5 +2138,20 @@ namespace Ink_Canvas {
|
|||||||
LogHelper.WriteLogToFile($"保存当前页面墨迹失败: {ex.ToString()}", LogHelper.LogType.Error);
|
LogHelper.WriteLogToFile($"保存当前页面墨迹失败: {ex.ToString()}", LogHelper.LogType.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 翻页后调用
|
||||||
|
private void LockInkForCurrentSlide(int slideIndex)
|
||||||
|
{
|
||||||
|
inkLockUntil = DateTime.Now.AddMilliseconds(InkLockMilliseconds);
|
||||||
|
lockedSlideIndex = slideIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 写入墨迹前调用
|
||||||
|
private bool CanWriteInk(int currentSlideIndex)
|
||||||
|
{
|
||||||
|
if (DateTime.Now < inkLockUntil) return false;
|
||||||
|
if (currentSlideIndex != lockedSlideIndex) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user