using System; using System.IO; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; namespace LanDiscovery.Services { public class ScreenshotService { public void CaptureToFile(FrameworkElement element, string filePath) { if (element == null) return; // Render logic // Get size double width = element.ActualWidth; double height = element.ActualHeight; if (width == 0 || height == 0) return; // Create RenderTargetBitmap // 96 DPI usually RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)width, (int)height, 96, 96, PixelFormats.Pbgra32); // Render DrawingVisual dv = new DrawingVisual(); using (DrawingContext ctx = dv.RenderOpen()) { VisualBrush vb = new VisualBrush(element); ctx.DrawRectangle(vb, null, new Rect(new Point(), new Size(width, height))); } renderTarget.Render(dv); // Encode PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(renderTarget)); using (FileStream fs = new FileStream(filePath, FileMode.Create)) { encoder.Save(fs); } } } }