使用VisualBrush获取WPF区域的System.Drawing.Bitmap

本文关键字:System Drawing Bitmap 区域 VisualBrush 获取 WPF 使用 | 更新日期: 2023-09-27 18:02:01

关键是,我需要转换为System.Drawing.Bitmap (. p)。. Net Framework 2.0),以获得包含其内容的WPF网格的单个帧。

我读了VisualBrushDrawingBrush,但我无法想象它应该如何工作。

我可以成功地将任何WPF BitmapSource转换为我的System.Drawing.Bitmap。但是如何从我的网格接收BitmapSource ?

谢谢

使用VisualBrush获取WPF区域的System.Drawing.Bitmap

要将Visual转换为BitmapSource,您可以使用RenderTargetBitmap, VisualBrushDrawingVisual:

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