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;