为什么使用“ RenderTargetBitmap”类会使GDI句柄计数增加?

时间:2019-06-13 13:48:54

标签: c# wpf gdi rendertargetbitmap

我的理解

1)'System.Windows.Media'中的类使用DirectX进行渲染。    它不会使用GDI +。 2)只有“ System.Drawing”中的类使用GDI +进行绘制。(这可能会导致GDI句柄数增加。)

问题

但是当我使用'System.Windows.Media.Imaging.RenderTargetBitmap'渲染位图时,GDI计数似乎增加了。

为什么会这样?

(由于我需要将这些图像放置在一个按钮上,并且此按钮是Grid控件的单元模板的一部分,因此我想减少GDI的使用。)

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
// Create Rectangle
Rect rect = new Rect(new System.Windows.Point(0, 0), new System.Windows.Point(100, 100));
// Draw Rectangle
System.Windows.Media.Pen pen = new System.Windows.Media.Pen();
pen.Brush = Brushes.Black;
pen.Thickness = 5;
drawingContext.DrawRectangle(Brushes.Black, pen, rect);             
drawingContext.Close();
RenderTargetBitmap bmp = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Pbgra32);
//Render DrawingVisual 
bmp.Render(drawingVisual);

1 个答案:

答案 0 :(得分:0)

环顾四周并进行一些分析,看来RenderTargetBitmap没有利用硬件渲染(Direct X)的优势。它仍然使用GDI +离线渲染位图。

对于WPF渲染的一般理解可能是个例外。 但是令我惊讶的是,MSDN没有提供任何有关此方面的线索。