最近我一直在研究使用Direct 2D(D2D)代替GDI +来绘制缓存的位图,我认为由于D2D是硬件加速的,因此绘制时间会更短(API似乎也相当友好)。事实上,我的原型设计表明我现在应该坚持使用GDI +,事实上这种情况实际上更快。
在我的原型中,我有一个MFC应用程序,它在OnPaint函数中为画布绘制了大约1000个图标。图标并非完全不同,可能不到20种不同的类型。从那里我从GDI绘图上下文初始化GDI +和D2D。首先访问位图是在它们被缓存后付出代价的。我将它们存储为CachedBitmaps和ID2D1Bitmaps的地图。
我的感觉是,在这个级别(绘制位图),缓慢是由于使用GDI交叉D2D引起的(我相信这会导致将D2D渲染的结果复制回GDI上下文)。我不知道GDI +在什么级别是硬件加速,但我认为BitBlt是......
任何人都可以对我的发现有所了解吗?