Save wpf view as image, preferably .png

I have searched and understand how to save an image in WPF by using BmpBitmapEncoder. My program has a MVVM view that I want to save as an image. Is it possible to set it as BitmapFrame so I can encode it? If so, is there an online tutorial?

Listed below is the view I want to save.

        <view:OverallView Grid.Row="1"
                      Visibility="{Binding IsOverallVisible,Converter={StaticResource B2VConv}}"

OverallView is a user control.

If setting a view as a BitmapFrame is not possible, what wpf elements can be set as a BitmapSource/Frame?


You can return it as 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));

    return result;

After that you can use the PngBitmapEncoder to save it as PNG and save it to stream, e.g.:

public static void SaveAsPng(RenderTargetBitmap src, Stream outputStream)
    PngBitmapEncoder encoder = new PngBitmapEncoder();


FIX: bitmap => result

Need Your Help

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.