From 2fe6ee640880584ae88d4bc932548f76f7556ff9 Mon Sep 17 00:00:00 2001 From: kriastans Date: Tue, 11 Jun 2024 13:55:19 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20=E5=A2=A8=E8=BF=B9=E9=87=8D=E6=92=AD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml | 133 ++++++++++++- Ink Canvas/MainWindow.xaml.cs | 1 + Ink Canvas/MainWindow_cs/MW_AutoFold.cs | 17 ++ .../MainWindow_cs/MW_FloatingBarIcons.cs | 187 ++++++++++++++---- Ink Canvas/MainWindow_cs/MW_PPT.cs | 14 ++ 5 files changed, 309 insertions(+), 43 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 8920524..121c400 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -1161,7 +1161,7 @@ Text="5.X.X.X" /> @@ -5444,8 +5444,135 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + InkCanvasForInkReplay.Visibility = Visibility.Collapsed; + inkCanvas.Visibility = Visibility.Visible; + if (currentMode == 1) + { + ViewboxBlackboardLeftSide.Visibility = Visibility.Visible; + ViewboxBlackboardRightSide.Visibility = Visibility.Visible; + BlackboardCenterSide.Visibility = Visibility.Visible; + } + else + { + ViewboxFloatingBar.Visibility = Visibility.Visible; + } + AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox); + isStopInkReplay = true; + }); + await Dispatcher.InvokeAsync(() => { isFloatingBarChangingHideMode = true; isFloatingBarFolded = true; diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 8d42f74..7773b19 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -780,57 +780,94 @@ namespace Ink_Canvas { InkCanvasForInkReplay.Visibility = Visibility.Visible; inkCanvas.Visibility = Visibility.Collapsed; + ViewboxFloatingBar.Visibility = Visibility.Collapsed; + ViewboxBlackboardLeftSide.Visibility = Visibility.Collapsed; + ViewboxBlackboardRightSide.Visibility = Visibility.Collapsed; + BlackboardCenterSide.Visibility = Visibility.Collapsed; + + AnimationsHelper.ShowWithFadeIn(BorderInkReplayToolBox); + InkReplayPanelStatusText.Text = "正在重播墨迹..."; + InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent); + InkReplayPlayButtonImage.Visibility = Visibility.Collapsed; + InkReplayPauseButtonImage.Visibility = Visibility.Visible; + isStopInkReplay = false; + isPauseInkReplay = false; + isRestartInkReplay = false; + inkReplaySpeed = 1; InkCanvasForInkReplay.Strokes.Clear(); var strokes = inkCanvas.Strokes.Clone(); if (inkCanvas.GetSelectedStrokes().Count != 0) strokes = inkCanvas.GetSelectedStrokes().Clone(); int k = 1, i = 0; new Thread(() => { - foreach (var stroke in strokes) { - var stylusPoints = new StylusPointCollection(); - if (stroke.StylusPoints.Count == 629) //圆或椭圆 - { - Stroke s = null; - foreach (var stylusPoint in stroke.StylusPoints) { - if (i++ >= 50) { - i = 0; - Thread.Sleep(10); - if (isStopInkReplay) return; - } + isRestartInkReplay = true; + while (isRestartInkReplay) { + isRestartInkReplay = false; + Application.Current.Dispatcher.Invoke(() => { + InkCanvasForInkReplay.Strokes.Clear(); + }); + foreach (var stroke in strokes) { - Application.Current.Dispatcher.Invoke(() => { - try { - InkCanvasForInkReplay.Strokes.Remove(s); + if (isRestartInkReplay) break; + + var stylusPoints = new StylusPointCollection(); + if (stroke.StylusPoints.Count == 629) //圆或椭圆 + { + Stroke s = null; + foreach (var stylusPoint in stroke.StylusPoints) { + + if (isRestartInkReplay) break; + + while (isPauseInkReplay) { + Thread.Sleep(10); } - catch { } - stylusPoints.Add(stylusPoint); - s = new Stroke(stylusPoints.Clone()); - s.DrawingAttributes = stroke.DrawingAttributes; - InkCanvasForInkReplay.Strokes.Add(s); - }); - } - } - else { - Stroke s = null; - foreach (var stylusPoint in stroke.StylusPoints) { - if (i++ >= k) { - i = 0; - Thread.Sleep(10); - if (isStopInkReplay) return; - } - - Application.Current.Dispatcher.Invoke(() => { - try { - InkCanvasForInkReplay.Strokes.Remove(s); + if (i++ >= 50) { + i = 0; + Thread.Sleep((int)(10 / inkReplaySpeed)); + if (isStopInkReplay) return; } - catch { } - stylusPoints.Add(stylusPoint); - s = new Stroke(stylusPoints.Clone()); - s.DrawingAttributes = stroke.DrawingAttributes; - InkCanvasForInkReplay.Strokes.Add(s); - }); + Application.Current.Dispatcher.Invoke(() => { + try { + InkCanvasForInkReplay.Strokes.Remove(s); + } + catch { } + + stylusPoints.Add(stylusPoint); + s = new Stroke(stylusPoints.Clone()); + s.DrawingAttributes = stroke.DrawingAttributes; + InkCanvasForInkReplay.Strokes.Add(s); + }); + } + } else { + Stroke s = null; + foreach (var stylusPoint in stroke.StylusPoints) { + + if (isRestartInkReplay) break; + + while (isPauseInkReplay) { + Thread.Sleep(10); + } + + if (i++ >= k) { + i = 0; + Thread.Sleep((int)(10 / inkReplaySpeed)); + if (isStopInkReplay) return; + } + + Application.Current.Dispatcher.Invoke(() => { + try { + InkCanvasForInkReplay.Strokes.Remove(s); + } + catch { } + + stylusPoints.Add(stylusPoint); + s = new Stroke(stylusPoints.Clone()); + s.DrawingAttributes = stroke.DrawingAttributes; + InkCanvasForInkReplay.Strokes.Add(s); + }); + } } } } @@ -839,20 +876,90 @@ namespace Ink_Canvas { Application.Current.Dispatcher.Invoke(() => { InkCanvasForInkReplay.Visibility = Visibility.Collapsed; inkCanvas.Visibility = Visibility.Visible; + AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox); }); }).Start(); } private bool isStopInkReplay = false; + private bool isPauseInkReplay = false; + private bool isRestartInkReplay = false; + private double inkReplaySpeed = 1; private void InkCanvasForInkReplay_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ClickCount == 2) { InkCanvasForInkReplay.Visibility = Visibility.Collapsed; inkCanvas.Visibility = Visibility.Visible; + ViewboxFloatingBar.Visibility = Visibility.Visible; + ViewboxBlackboardLeftSide.Visibility = Visibility.Visible; + ViewboxBlackboardRightSide.Visibility = Visibility.Visible; + BlackboardCenterSide.Visibility = Visibility.Visible; + AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox); isStopInkReplay = true; } } + private void InkReplayPlayPauseBorder_OnMouseDown(object sender, MouseButtonEventArgs e) { + InkReplayPlayPauseBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11)); + } + + private void InkReplayPlayPauseBorder_OnMouseUp(object sender, MouseButtonEventArgs e) + { + InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent); + isPauseInkReplay = !isPauseInkReplay; + InkReplayPanelStatusText.Text = isPauseInkReplay?"已暂停!":"正在重播墨迹..."; + InkReplayPlayButtonImage.Visibility = isPauseInkReplay ? Visibility.Visible: Visibility.Collapsed; + InkReplayPauseButtonImage.Visibility = !isPauseInkReplay ? Visibility.Visible : Visibility.Collapsed; + } + + private void InkReplayStopButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e) + { + InkReplayStopButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11)); + } + + private void InkReplayStopButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e) + { + InkReplayStopButtonBorder.Background = new SolidColorBrush(Colors.Transparent); + InkCanvasForInkReplay.Visibility = Visibility.Collapsed; + inkCanvas.Visibility = Visibility.Visible; + ViewboxFloatingBar.Visibility = Visibility.Visible; + ViewboxBlackboardLeftSide.Visibility = Visibility.Visible; + ViewboxBlackboardRightSide.Visibility = Visibility.Visible; + BlackboardCenterSide.Visibility = Visibility.Visible; + AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox); + isStopInkReplay = true; + } + + private void InkReplayReplayButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e) + { + InkReplayReplayButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11)); + } + + private void InkReplayReplayButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e) + { + InkReplayReplayButtonBorder.Background = new SolidColorBrush(Colors.Transparent); + isRestartInkReplay = true; + isPauseInkReplay = false; + InkReplayPanelStatusText.Text = "正在重播墨迹..."; + InkReplayPlayButtonImage.Visibility = Visibility.Collapsed; + InkReplayPauseButtonImage.Visibility = Visibility.Visible; + } + + private void InkReplaySpeedButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e) + { + InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11)); + } + + private void InkReplaySpeedButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e) + { + InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Colors.Transparent); + inkReplaySpeed = inkReplaySpeed == 0.5 ? 1 : + inkReplaySpeed == 1 ? 2 : + inkReplaySpeed == 2 ? 4 : + inkReplaySpeed == 4 ? 8 : 0.5; + InkReplaySpeedTextBlock.Text = inkReplaySpeed + "x"; + } + private void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e) { if (BorderTools.Visibility == Visibility.Visible) { AnimationsHelper.HideWithSlideAndFade(EraserSizePanel); diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 0739865..ab483b7 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -228,6 +228,20 @@ namespace Ink_Canvas { FoldFloatingBar_MouseUp(null, null); else if (isFloatingBarFolded) UnFoldFloatingBar_MouseUp(null, null); + if (!Settings.Automation.IsAutoFoldInPPTSlideShow && !isFloatingBarFolded) { + InkCanvasForInkReplay.Visibility = Visibility.Collapsed; + inkCanvas.Visibility = Visibility.Visible; + if (currentMode == 1) { + ViewboxBlackboardLeftSide.Visibility = Visibility.Visible; + ViewboxBlackboardRightSide.Visibility = Visibility.Visible; + BlackboardCenterSide.Visibility = Visibility.Visible; + } else { + ViewboxFloatingBar.Visibility = Visibility.Visible; + } + AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox); + isStopInkReplay = true; + } + LogHelper.WriteLogToFile("PowerPoint Application Slide Show Begin", LogHelper.LogType.Event); Application.Current.Dispatcher.Invoke(() => { if (currentMode != 0) ImageBlackboard_MouseUp(null, null);