From 0065a1f81f89505d8c920c6b562d319489d71a89 Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Sat, 12 Jul 2025 09:00:51 +0800 Subject: [PATCH] Update MW_Screenshot.cs --- Ink Canvas/MainWindow_cs/MW_Screenshot.cs | 87 +++++------------------ 1 file changed, 19 insertions(+), 68 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_Screenshot.cs b/Ink Canvas/MainWindow_cs/MW_Screenshot.cs index 977d0a42..fa6d7e25 100644 --- a/Ink Canvas/MainWindow_cs/MW_Screenshot.cs +++ b/Ink Canvas/MainWindow_cs/MW_Screenshot.cs @@ -1,7 +1,6 @@ using System; using System.Drawing.Imaging; using System.IO; -using System.Runtime.InteropServices; using System.Windows; namespace Ink_Canvas { @@ -36,90 +35,42 @@ namespace Ink_Canvas { using (var memoryGraphics = System.Drawing.Graphics.FromImage(bitmap)) { memoryGraphics.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, System.Drawing.CopyPixelOperation.SourceCopy); + // 确保目录存在 var directory = Path.GetDirectoryName(savePath); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } - - try { - // 新增双重目录检查 - Directory.CreateDirectory(directory); // 防止多线程场景下的竞争条件 - bitmap.Save(savePath, ImageFormat.Png); - } - catch (Exception ex) when (ex is IOException || - ex is UnauthorizedAccessException || - ex is ExternalException) { // 新增GDI+异常捕获 - // 改进备用路径处理 - var docPath = Path.Combine( - Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), - "Auto Saved - Screenshots", - DateTime.Now.ToString("yyyyMMdd"), - Path.GetFileNameWithoutExtension(savePath) + "_retry.png"); // 添加重试后缀 - - try { - var docDir = Path.GetDirectoryName(docPath); - Directory.CreateDirectory(docDir); - bitmap.Save(docPath, ImageFormat.Png); - savePath = docPath; - } - catch (Exception fallbackEx) { - // 最终错误处理 - if (!isHideNotification) { - ShowNotification($"截图保存失败: {fallbackEx.Message}"); - } - return; - } - } + + bitmap.Save(savePath, ImageFormat.Png); } if (!isHideNotification) { - try { - ShowNotification($"截图成功保存至 {savePath}"); - } - catch { - // 防止通知系统自身异常导致崩溃 - } + ShowNotification($"截图成功保存至 {savePath}"); } } // 获取日期文件夹路径 private string GetDateFolderPath(string fileName) { - var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves"); - var dateFolder = DateTime.Now.ToString("yyyyMMdd"); - var fullPath = Path.Combine(basePath, "Auto Saved - Screenshots", dateFolder); - - try { - if (!Directory.Exists(fullPath)) { - Directory.CreateDirectory(fullPath); - } - } - catch (Exception ex) when - (ex is IOException || - ex is UnauthorizedAccessException) - { - // 如果创建失败则使用软件根目录作为最终备选 - basePath = AppDomain.CurrentDomain.BaseDirectory; - fullPath = Path.Combine(basePath, "Auto Saved - Screenshots", dateFolder); - - Directory.CreateDirectory(fullPath); + if (string.IsNullOrWhiteSpace(fileName)) { + fileName = DateTime.Now.ToString("HH-mm-ss"); } - return Path.Combine(fullPath, $"{fileName}.png"); + var basePath = Settings.Automation.AutoSavedStrokesLocation; + var dateFolder = DateTime.Now.ToString("yyyyMMdd"); + + return Path.Combine( + basePath, + "Auto Saved - Screenshots", + dateFolder, + $"{fileName}.png"); } + // 获取默认文件夹路径 private string GetDefaultFolderPath() { - var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves"); + var basePath = Settings.Automation.AutoSavedStrokesLocation; var screenshotsFolder = Path.Combine(basePath, "Auto Saved - Screenshots"); - - try { - if (!Directory.Exists(screenshotsFolder)) { - Directory.CreateDirectory(screenshotsFolder); - } - } - catch (Exception) { - // 如果创建失败则使用文档目录 - basePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - screenshotsFolder = Path.Combine(basePath, "Auto Saved - Screenshots"); + + if (!Directory.Exists(screenshotsFolder)) { Directory.CreateDirectory(screenshotsFolder); } @@ -128,4 +79,4 @@ namespace Ink_Canvas { $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.png"); } } -} \ No newline at end of file +}