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);
答案 0 :(得分:0)
环顾四周并进行一些分析,看来RenderTargetBitmap没有利用硬件渲染(Direct X)的优势。它仍然使用GDI +离线渲染位图。
对于WPF渲染的一般理解可能是个例外。 但是令我惊讶的是,MSDN没有提供任何有关此方面的线索。