2011-07-13 50 views
2

重點是,我需要轉換爲System.Drawing.Bitmap(.Net Framework 2.0)以獲取WPF Grid的單個框架及其內容。使用VisualBrush獲取WPF區域的System.Drawing.Bitmap

我讀了VisualBrushDrawingBrush但我無法想象它應該如何工作。

我可以成功將任何WPF BitmapSource轉換成我的System.Drawing.Bitmap。但如何從我的網格接收BitmapSource

感謝

回答

5

要轉換VisualBitmapSource你可以使用RenderTargetBitmapVisualBrushDrawingVisual

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