关键是,我需要转换为 System.Drawing.Bitmap (.Net Framework 2.0) 以获取 WPF 网格的单帧及其内容。
我读过VisualBrush
,DrawingBrush
但我无法想象它应该如何工作。
我可以成功地将任何 WPFBitmapSource
转换为我的System.Drawing.Bitmap
。但是如何BitmapSource
从我的网格接收呢?
谢谢
关键是,我需要转换为 System.Drawing.Bitmap (.Net Framework 2.0) 以获取 WPF 网格的单帧及其内容。
我读过VisualBrush
,DrawingBrush
但我无法想象它应该如何工作。
我可以成功地将任何 WPFBitmapSource
转换为我的System.Drawing.Bitmap
。但是如何BitmapSource
从我的网格接收呢?
谢谢
要将 a 转换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;
}