使用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网格的单个帧。
我读了VisualBrush
和DrawingBrush
,但我无法想象它应该如何工作。
我可以成功地将任何WPF BitmapSource
转换为我的System.Drawing.Bitmap
。但是如何从我的网格接收BitmapSource
?
谢谢
要将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;
}