Get System.Drawing.Bitmap of a WPF Area using VisualBrush

后端 未结 1 964
梦毁少年i
梦毁少年i 2021-01-22 03:17

The point is, that I need to convert to a System.Drawing.Bitmap (.Net Framework 2.0) to get a single frame of an WPF Grid with its content.

I read about VisualBru

相关标签:
1条回答
  • 2021-01-22 03:44

    To convert a Visual to BitmapSource you can use RenderTargetBitmap, VisualBrush and 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;
    }   
    
    0 讨论(0)
提交回复
热议问题