5

根据MSDN 的列表,GDI 和 GDI+ 都是遗留的。那么在使用 Windows API 编写应用程序时,应该使用什么来渲染 2d 图形?

Direct2D、WIC、DirectComposition(这对我来说是新的)、GDI+、GDI?

注意:不是 2d 游戏 - 只是 2d 图像。

4

2 回答 2

4

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。

于 2012-07-25T23:12:07.373 回答
2

除非你真的必须支持 XP(让它死掉!),否则我强烈建议使用 Direct2D。Direct2D 对所有新开发都有意义的原因有很多:

  • 通常更快的渲染(锯齿和抗锯齿渲染)
  • 自从引入 Vista 以来,GDI 不是硬件加速非常糟糕(由于新的驱动程序模型)
  • 与 Direct3D(如果需要)、DirectWrite、DirectComposition 等更好地集成。
  • 更好地利用新的 GPU 功能
  • 内置许多位图效果
  • Metro 风格应用不允许 GDI

因此,我建议任何正在开始使用 Direct2D 而不是 GDI/GDI+ 的新应用程序的人。

于 2012-07-31T14:52:23.017 回答