From fab9e4b265fa4ae9df693959c27aff57d5b13315 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 13 Sep 2025 13:37:51 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_ImageInsert.cs | 40 +++++++++++++++++ .../Windows/ScreenshotSelectorWindow.xaml | 9 ++++ .../Windows/ScreenshotSelectorWindow.xaml.cs | 41 ++++++++++++++++++ ...vasForClass.csproj.AssemblyReference.cache | Bin 35689 -> 35826 bytes 4 files changed, 90 insertions(+) diff --git a/Ink Canvas/MainWindow_cs/MW_ImageInsert.cs b/Ink Canvas/MainWindow_cs/MW_ImageInsert.cs index 6c77b485..82193558 100644 --- a/Ink Canvas/MainWindow_cs/MW_ImageInsert.cs +++ b/Ink Canvas/MainWindow_cs/MW_ImageInsert.cs @@ -100,6 +100,46 @@ namespace Ink_Canvas } } + // 直接全屏截图并插入到画布 + private async Task CaptureFullScreenAndInsert() + { + try + { + // 隐藏主窗口以避免截图包含窗口本身 + var originalVisibility = Visibility; + Visibility = Visibility.Hidden; + + // 等待窗口隐藏 + await Task.Delay(200); + + // 获取虚拟屏幕边界 + var virtualScreen = SystemInformation.VirtualScreen; + var fullScreenArea = new Rectangle(virtualScreen.X, virtualScreen.Y, virtualScreen.Width, virtualScreen.Height); + + // 截取全屏 + using (var fullScreenBitmap = CaptureScreenArea(fullScreenArea)) + { + if (fullScreenBitmap != null) + { + // 将截图转换为WPF Image并插入到画布 + await InsertScreenshotToCanvas(fullScreenBitmap); + } + else + { + ShowNotification("全屏截图失败"); + } + } + + // 恢复窗口显示 + Visibility = originalVisibility; + } + catch (Exception ex) + { + ShowNotification($"全屏截图失败: {ex.Message}"); + Visibility = Visibility.Visible; + } + } + // 显示截图区域选择器 private async Task ShowScreenshotSelector() { diff --git a/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml b/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml index ef299119..05739cce 100644 --- a/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml +++ b/Ink Canvas/Windows/ScreenshotSelectorWindow.xaml @@ -117,6 +117,15 @@ BorderThickness="0" FontWeight="Medium" Click="FreehandModeButton_Click" /> +