Instantané d'un WPF espace de la Toile à l'aide de RenderTargetBitmap

Je veux créer un Instantané de l'espace de la Toile dans mon Application. Je suis à l'aide de Visual pinceau pour obtenir l'Instantané et l'enregistrement de la même aide de la PngEncoder. Mais le PNG est juste un vide noir de l'image. Je ne suis pas sûr que le problème est avec le BitmapSource créé ou le PNGEncoder question. Voici le code que j'utilise pour obtenir le même.

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);
    }

}   

OriginalL'auteur Amar | 2013-01-02