diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index c3f64e0..e2bd60a 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -442,6 +442,7 @@ + diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 8ed8698..53710a1 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -37,6 +37,7 @@ using System.Windows.Media.Animation; using System.Windows.Ink.AnalysisCore; using Ink_Canvas.Helpers; using Microsoft.Win32; +using Path = System.IO.Path; namespace Ink_Canvas { @@ -723,6 +724,15 @@ namespace Ink_Canvas { ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn = false; } + + if (Settings.Automation.IsAutoSaveScreenShotInPowerPoint) + { + ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn = true; + } + else + { + ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn = false; + } } else { @@ -1952,11 +1962,16 @@ namespace Ink_Canvas pptApplication.SlideShowEnd -= PptApplication_SlideShowEnd; pptApplication = null; timerCheckPPT.Start(); - BtnPPTSlideShow.Visibility = Visibility.Collapsed; - BtnPPTSlideShowEnd.Visibility = Visibility.Collapsed; + Application.Current.Dispatcher.Invoke(() => + { + BtnPPTSlideShow.Visibility = Visibility.Collapsed; + BtnPPTSlideShowEnd.Visibility = Visibility.Collapsed; + }); } bool isPresentationHaveBlackSpace = false; + + private string pptName = null; //bool isButtonBackgroundTransparent = true; //此变量仅用于保存用于幻灯片放映时的优化 private void PptApplication_SlideShowBegin(SlideShowWindow Wn) { @@ -1996,6 +2011,7 @@ namespace Ink_Canvas previousSlideID = 0; memoryStreams = new MemoryStream[slidescount + 2]; + pptName = Wn.Presentation.Name; LogHelper.NewLog("Name: " + Wn.Presentation.Name); LogHelper.NewLog("Slides Count: " + slidescount.ToString()); @@ -2243,6 +2259,9 @@ namespace Ink_Canvas ms.Position = 0; memoryStreams[previousSlideID] = ms; + if (inkCanvas.Strokes.Count > 0 && Settings.Automation.IsAutoSaveScreenShotInPowerPoint) + SaveScreenShot(true, Wn.Presentation.Name + "/" + Wn.View.CurrentShowPosition); + BtnRedo.IsEnabled = false; BtnRedo.Visibility = Visibility.Collapsed; @@ -2636,6 +2655,13 @@ namespace Ink_Canvas Settings.Automation.IsAutoSaveStrokesInPowerPoint = ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn; SaveSettingsToFile(); } + + private void ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled(object sender, RoutedEventArgs e) + { + if (!isLoaded) return; + Settings.Automation.IsAutoSaveScreenShotInPowerPoint = ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn; + SaveSettingsToFile(); + } #endregion @@ -5508,7 +5534,13 @@ namespace Ink_Canvas Thread.Sleep(20); try { - Application.Current.Dispatcher.Invoke(() => { SaveScreenShot(isHideNotification); }); + Application.Current.Dispatcher.Invoke(() => + { + if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible) + SaveScreenShot(isHideNotification, $"{pptName}/{previousSlideID}_{DateTime.Now:HH-mm-ss}"); + else + SaveScreenShot(isHideNotification); + }); } catch { @@ -5538,7 +5570,7 @@ namespace Ink_Canvas })).Start(); } - private void SaveScreenShot(bool isHideNotification) + private void SaveScreenShot(bool isHideNotification, string fileName = null) { System.Drawing.Rectangle rc = System.Windows.Forms.SystemInformation.VirtualScreen; var bitmap = new System.Drawing.Bitmap(rc.Width, rc.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); @@ -5548,19 +5580,22 @@ namespace Ink_Canvas memoryGrahics.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, System.Drawing.CopyPixelOperation.SourceCopy); } - if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"\Ink Canvas Screenshots")) + if (string.IsNullOrWhiteSpace(fileName)) + fileName = DateTime.Now.ToString("HH-mm-ss"); + var savePath = + $@"{Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)}\Ink Canvas Screenshots\{DateTime.Now.Date:yyyyMMdd}\{fileName}.png"; + + + if (!Directory.Exists(Path.GetDirectoryName(savePath))) { - Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + - @"\Ink Canvas Screenshots"); + Directory.CreateDirectory(Path.GetDirectoryName(savePath)); } - bitmap.Save(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + - @"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png", ImageFormat.Png); + bitmap.Save(savePath, ImageFormat.Png); if (!isHideNotification) { - ShowNotification("截图成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + - @"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png"); + ShowNotification("截图成功保存至 " + savePath); } } diff --git a/Ink Canvas/Settings.cs b/Ink Canvas/Settings.cs index 9cf14c7..5e7f29c 100644 --- a/Ink Canvas/Settings.cs +++ b/Ink Canvas/Settings.cs @@ -97,6 +97,8 @@ namespace Ink_Canvas public bool IsAutoSaveStrokesAtClear { get; set; } = false; [JsonProperty("isAutoSaveStrokesInPowerPoint")] public bool IsAutoSaveStrokesInPowerPoint { get; set; } = true; + [JsonProperty("isAutoSaveScreenShotInPowerPoint")] + public bool IsAutoSaveScreenShotInPowerPoint { get; set; } = false; [JsonProperty("isAutoClearWhenExitingWritingMode")] public bool IsAutoClearWhenExitingWritingMode { get; set; } = false;