#if DEBUG using System.IO; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; namespace AutoShutdown.Services; internal static class ScreenshotService { public static string Capture(Window window, string? requestedPath = null) { var path = string.IsNullOrWhiteSpace(requestedPath) ? Path.Combine(AppContext.BaseDirectory, "Screenshots", $"ui-{DateTime.Now:yyyyMMdd-HHmmss}.png") : Path.GetFullPath(requestedPath); var directory = Path.GetDirectoryName(path) ?? AppContext.BaseDirectory; Directory.CreateDirectory(directory); var visual = (FrameworkElement)window.Content; var width = Math.Max(1, (int)Math.Ceiling(visual.ActualWidth)); var height = Math.Max(1, (int)Math.Ceiling(visual.ActualHeight)); var target = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32); target.Render(visual); var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(target)); using var stream = File.Create(path); encoder.Save(stream); return path; } } #endif