2011-07-13 10 views
2

ポイントは、内容を含むWPFグリッドの単一フレームを取得するために、System.Drawing.Bitmap(.Net Framework 2.0)に変換する必要があります。VisualBrushを使用してWPFエリアのSystem.Drawing.Bitmapを取得します。

私は約VisualBrushDrawingBrushを読んでいますが、どのように動作するのか想像できません。

WPF BitmapSourceを私のSystem.Drawing.Bitmapに変換できます。しかし、私のグリッドからBitmapSourceを受け取る方法は?あなたがRenderTargetBitmapVisualBrushDrawingVisualを使用することができますBitmapSourceVisualを変換するには

おかげ

答えて

5

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; 
} 
関連する問題