Получить System.Drawing.Bitmap области WPF с помощью VisualBrush - PullRequest
2 голосов
/ 13 июля 2011

Дело в том, что мне нужно преобразовать в System.Drawing.Bitmap (.Net Framework 2.0), чтобы получить один кадр таблицы WPF с ее содержимым.

Я читал о VisualBrush и DrawingBrush, но не представляю, как это должно работать.

Я могу успешно преобразовать любой WPF BitmapSource в мой System.Drawing.Bitmap.Но как получить BitmapSource из моей сетки?

Спасибо

1 Ответ

5 голосов
/ 13 июля 2011

Для преобразования Visual в BitmapSource вы можете использовать RenderTargetBitmap, VisualBrush и DrawingVisual:

public BitmapSource 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);

    return target;
}   
...