根据MSDN 的列表,GDI 和 GDI+ 都是遗留的。那么在使用 Windows API 编写应用程序时,应该使用什么来渲染 2d 图形?
Direct2D、WIC、DirectComposition(这对我来说是新的)、GDI+、GDI?
注意:不是 2d 游戏 - 只是 2d 图像。
GDI 或 GDI+ 都是满足基本需求的好选择。
操作系统仍然到处使用 GDI,所以我不太确定它们所说的“遗留”是什么意思。像这样的词通常没有意义,所以你不应该因为忽略它们而感到难过。将这些 API 标记为“遗留”的人可能是那些告诉你所有 Win32 都是遗留的人之一,却没有意识到他们如此喜爱的这些“现代”GUI 框架是建立在 Win32 之上的,并且不可能没有它就可以运行。
如果您需要 GDI+ 提供的额外功能(例如透明度等)和/或如果您使用 C++ 编程并且更喜欢 GDI+ 的基于类的 API 而不是 GDI 的平面 C 样式 API,请使用 GDI+。但请注意,如果您的应用程序使用 GDI+,您必须将Gdiplus.dll
库重新分发给运行 Windows 2000 和更早版本的用户。基于 GDI 的应用程序将始终开箱即用。
这并不是说您不应该调查新的竞争者。据推测,Direct2D 旨在与 GDI 和 GDI+ 很好地互操作。唯一的问题是,许多开发人员无法要求他们的所有客户都升级到 Windows Vista 或更高版本。支持 XP 似乎仍然是一个有价值的目标(至少为这些用户提供最小的功能子集),如果您在 Direct2D 或其中一个新奇特的框架中编写整个 UI,这实际上是不可能的。对于标准的业务线应用程序,我还没有真正看到切换到 Direct2D 的优势(我确信游戏和其他需要 3D 效果的程序有优势)。您可能对Direct2D 和 GDI 之间的以下比较感兴趣,它们都是二维的、硬件加速的图形 API。
除非你真的必须支持 XP(让它死掉!),否则我强烈建议使用 Direct2D。Direct2D 对所有新开发都有意义的原因有很多:
因此,我建议任何正在开始使用 Direct2D 而不是 GDI/GDI+ 的新应用程序的人。