[feat] 新增 PPT 清屏 / 翻页截图
优化截图文件名, 以 PPT 文件名进行分类 清屏时增加时间戳区分, 确保保存所有内容
This commit is contained in:
parent
1912965309
commit
80d2104447
@ -442,6 +442,7 @@
|
|||||||
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesAtScreenshot" Header="截图时自动保存墨迹" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled"/>
|
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesAtScreenshot" Header="截图时自动保存墨迹" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled"/>
|
||||||
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesAtClear" Header="清屏时自动截图" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesAtClear_Toggled"/>
|
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesAtClear" Header="清屏时自动截图" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesAtClear_Toggled"/>
|
||||||
<ui:ToggleSwitch Name="ToggleSwitchClearExitingWritingMode" Header="切换到鼠标模式后自动清屏" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchExitingWritingMode_Toggled"/>
|
<ui:ToggleSwitch Name="ToggleSwitchClearExitingWritingMode" Header="切换到鼠标模式后自动清屏" IsOn="False" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchExitingWritingMode_Toggled"/>
|
||||||
|
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveScreenShotInPowerPoint" Header="自动幻灯片截屏" IsOn="True" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled"/>
|
||||||
<TextBlock Text="开启后将在结束幻灯片放映时自动将已有墨迹保存至此电脑,并在下次打开时自动加载(文件名和幻灯片页数都要相同)" TextWrapping="Wrap" Foreground="#666666"/>
|
<TextBlock Text="开启后将在结束幻灯片放映时自动将已有墨迹保存至此电脑,并在下次打开时自动加载(文件名和幻灯片页数都要相同)" TextWrapping="Wrap" Foreground="#666666"/>
|
||||||
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesInPowerPoint" Header="自动保存幻灯片墨迹" IsOn="True" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled"/>
|
<ui:ToggleSwitch Name="ToggleSwitchAutoSaveStrokesInPowerPoint" Header="自动保存幻灯片墨迹" IsOn="True" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled"/>
|
||||||
</ui:SimpleStackPanel>
|
</ui:SimpleStackPanel>
|
||||||
|
@ -37,6 +37,7 @@ using System.Windows.Media.Animation;
|
|||||||
using System.Windows.Ink.AnalysisCore;
|
using System.Windows.Ink.AnalysisCore;
|
||||||
using Ink_Canvas.Helpers;
|
using Ink_Canvas.Helpers;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
|
using Path = System.IO.Path;
|
||||||
|
|
||||||
namespace Ink_Canvas
|
namespace Ink_Canvas
|
||||||
{
|
{
|
||||||
@ -723,6 +724,15 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn = false;
|
ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Settings.Automation.IsAutoSaveScreenShotInPowerPoint)
|
||||||
|
{
|
||||||
|
ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1952,11 +1962,16 @@ namespace Ink_Canvas
|
|||||||
pptApplication.SlideShowEnd -= PptApplication_SlideShowEnd;
|
pptApplication.SlideShowEnd -= PptApplication_SlideShowEnd;
|
||||||
pptApplication = null;
|
pptApplication = null;
|
||||||
timerCheckPPT.Start();
|
timerCheckPPT.Start();
|
||||||
BtnPPTSlideShow.Visibility = Visibility.Collapsed;
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
BtnPPTSlideShowEnd.Visibility = Visibility.Collapsed;
|
{
|
||||||
|
BtnPPTSlideShow.Visibility = Visibility.Collapsed;
|
||||||
|
BtnPPTSlideShowEnd.Visibility = Visibility.Collapsed;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isPresentationHaveBlackSpace = false;
|
bool isPresentationHaveBlackSpace = false;
|
||||||
|
|
||||||
|
private string pptName = null;
|
||||||
//bool isButtonBackgroundTransparent = true; //此变量仅用于保存用于幻灯片放映时的优化
|
//bool isButtonBackgroundTransparent = true; //此变量仅用于保存用于幻灯片放映时的优化
|
||||||
private void PptApplication_SlideShowBegin(SlideShowWindow Wn)
|
private void PptApplication_SlideShowBegin(SlideShowWindow Wn)
|
||||||
{
|
{
|
||||||
@ -1996,6 +2011,7 @@ namespace Ink_Canvas
|
|||||||
previousSlideID = 0;
|
previousSlideID = 0;
|
||||||
memoryStreams = new MemoryStream[slidescount + 2];
|
memoryStreams = new MemoryStream[slidescount + 2];
|
||||||
|
|
||||||
|
pptName = Wn.Presentation.Name;
|
||||||
LogHelper.NewLog("Name: " + Wn.Presentation.Name);
|
LogHelper.NewLog("Name: " + Wn.Presentation.Name);
|
||||||
LogHelper.NewLog("Slides Count: " + slidescount.ToString());
|
LogHelper.NewLog("Slides Count: " + slidescount.ToString());
|
||||||
|
|
||||||
@ -2243,6 +2259,9 @@ namespace Ink_Canvas
|
|||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
memoryStreams[previousSlideID] = ms;
|
memoryStreams[previousSlideID] = ms;
|
||||||
|
|
||||||
|
if (inkCanvas.Strokes.Count > 0 && Settings.Automation.IsAutoSaveScreenShotInPowerPoint)
|
||||||
|
SaveScreenShot(true, Wn.Presentation.Name + "/" + Wn.View.CurrentShowPosition);
|
||||||
|
|
||||||
BtnRedo.IsEnabled = false;
|
BtnRedo.IsEnabled = false;
|
||||||
BtnRedo.Visibility = Visibility.Collapsed;
|
BtnRedo.Visibility = Visibility.Collapsed;
|
||||||
|
|
||||||
@ -2637,6 +2656,13 @@ namespace Ink_Canvas
|
|||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (!isLoaded) return;
|
||||||
|
Settings.Automation.IsAutoSaveScreenShotInPowerPoint = ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn;
|
||||||
|
SaveSettingsToFile();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Gesture
|
#region Gesture
|
||||||
@ -5508,7 +5534,13 @@ namespace Ink_Canvas
|
|||||||
Thread.Sleep(20);
|
Thread.Sleep(20);
|
||||||
try
|
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
|
catch
|
||||||
{
|
{
|
||||||
@ -5538,7 +5570,7 @@ namespace Ink_Canvas
|
|||||||
})).Start();
|
})).Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveScreenShot(bool isHideNotification)
|
private void SaveScreenShot(bool isHideNotification, string fileName = null)
|
||||||
{
|
{
|
||||||
System.Drawing.Rectangle rc = System.Windows.Forms.SystemInformation.VirtualScreen;
|
System.Drawing.Rectangle rc = System.Windows.Forms.SystemInformation.VirtualScreen;
|
||||||
var bitmap = new System.Drawing.Bitmap(rc.Width, rc.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
|
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);
|
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) +
|
Directory.CreateDirectory(Path.GetDirectoryName(savePath));
|
||||||
@"\Ink Canvas Screenshots");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bitmap.Save(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) +
|
bitmap.Save(savePath, ImageFormat.Png);
|
||||||
@"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png", ImageFormat.Png);
|
|
||||||
|
|
||||||
if (!isHideNotification)
|
if (!isHideNotification)
|
||||||
{
|
{
|
||||||
ShowNotification("截图成功保存至 " + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) +
|
ShowNotification("截图成功保存至 " + savePath);
|
||||||
@"\Ink Canvas Screenshots\" + DateTime.Now.ToString("u").Replace(':', '-') + ".png");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +97,8 @@ namespace Ink_Canvas
|
|||||||
public bool IsAutoSaveStrokesAtClear { get; set; } = false;
|
public bool IsAutoSaveStrokesAtClear { get; set; } = false;
|
||||||
[JsonProperty("isAutoSaveStrokesInPowerPoint")]
|
[JsonProperty("isAutoSaveStrokesInPowerPoint")]
|
||||||
public bool IsAutoSaveStrokesInPowerPoint { get; set; } = true;
|
public bool IsAutoSaveStrokesInPowerPoint { get; set; } = true;
|
||||||
|
[JsonProperty("isAutoSaveScreenShotInPowerPoint")]
|
||||||
|
public bool IsAutoSaveScreenShotInPowerPoint { get; set; } = false;
|
||||||
[JsonProperty("isAutoClearWhenExitingWritingMode")]
|
[JsonProperty("isAutoClearWhenExitingWritingMode")]
|
||||||
public bool IsAutoClearWhenExitingWritingMode { get; set; } = false;
|
public bool IsAutoClearWhenExitingWritingMode { get; set; } = false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user