Migawka obszaru płótna WPF przy użyciu RenderTargetBitmap

Chcę utworzyć migawkę obszaru płótna w mojej aplikacji. Używam pędzla Visual, aby uzyskać Snapshot i zapisać to samo za pomocą PngEncoder. Ale wynikowy PNG to tylko pusty czarny obraz. Nie jestem pewien, czy problem dotyczy utworzonego pliku BitmapSource, czy PNGEncoder. Oto kod, którego używam do uzyskania tego samego.

public void ConvertToBitmapSource(UIElement element)
{
    var target = new RenderTargetBitmap((int)(element.RenderSize.Width), (int)(element.RenderSize.Height), 96, 96, PixelFormats.Pbgra32);
    var brush = new VisualBrush(element);

    var visual = new DrawingVisual();
    var drawingContext = visual.RenderOpen();


    drawingContext.DrawRectangle(brush, null, new Rect(new Point(0, 0),
    new Point(element.RenderSize.Width, element.RenderSize.Height)));

    drawingContext.Close();

    target.Render(visual);

    PngBitmapEncoder encoder = new PngBitmapEncoder();
    BitmapFrame outputFrame = BitmapFrame.Create(target);
    encoder.Frames.Add(outputFrame);
    using (FileStream file = File.OpenWrite("TestImage.png"))
    {
         encoder.Save(file);
    }

}   

questionAnswers(2)

yourAnswerToTheQuestion