关键是,我需要转换为System.Drawing.Bitmap(.Net Framework 2.0)以获取WPF Grid的单帧及其内容。
我读到了关于VisualBrush
和DrawingBrush
但我无法想象它应该如何运作。
我可以将任何WPF BitmapSource
成功转换为System.Drawing.Bitmap
。但是如何从我的网格中接收BitmapSource
?
由于
答案 0 :(得分:5)
要将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;
}