You can return it as a RenderTargetBitmap :
public static RenderTargetBitmap GetImage(OverallView view) { Size size = new Size(view.ActualWidth, view.ActualHeight); if (size.IsEmpty) return null; RenderTargetBitmap result = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32); DrawingVisual drawingvisual = new DrawingVisual(); using (DrawingContext context = drawingvisual.RenderOpen()) { context.DrawRectangle(new VisualBrush(view), null, new Rect(new Point(), size)); context.Close(); } result.Render(drawingvisual); return result; }
After that, you can use PngBitmapEncoder to save it as PNG and save it in a stream, for example:
public static void SaveAsPng(RenderTargetBitmap src, Stream outputStream) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(src)); encoder.Save(outputStream); }
FIX: bitmap => result
user432219
source share