2012-07-25 36 views
5

根据MSDN's listing,GDI和GDI +都是遗留的。因此,在使用Windows API编写应用程序时,您应该如何使用二维图形渲染?Microsoft建议使用什么本机API来渲染2D图形?

Direct2D,WIC,DirectComposition(这对我来说是新手),GDI +,GDI?

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

+0

DirectComposition看起来像它需要Windows 8,顺便说一句。这可能是我没听说过的原因。 – chris 2012-07-25 23:13:57

+2

我不担心微软的建议,他们倾向于随着他们发布的每月API的风格而改变。当.NET被标记为“传统”时,GDI仍然存在。 – AJG85 2012-07-26 00:03:31

+0

相关问题:http://stackoverflow.com/questions/10007789/are-gdi-gdi-and-opengl-really-obsolete-deprecated – 2012-07-26 09:56:42

回答

4

GDI或GDI +都是基本需求的不错选择。

操作系统仍然使用GDI到处都是,所以我不太确定它们是什么意思的“遗产”。像这样的词通常没有意义,所以你不应该忽视它们而感到不好。将这些API标记为“遗留”的人可能是那些告诉你,所有Win32都是遗留的人,却没有意识到他们非常喜欢的这些“现代”GUI框架是建立在Win32之上的,并且不能够没有它的功能。

如果您需要它提供的额外功能(例如透明度等)和/或如果您使用C++进行编程并且更喜欢将其基于类的API用于GDI的扁平C风格API,请使用GDI +。但请注意,如果您的应用使用GDI +,则必须将Gdiplus.dll库重新分发给运行Windows 2000和更早版本的用户。基于GDI的应用程序将始终开箱即用。

这并不是说你不应该调查新的竞争者。据推测,Direct2D旨在与GDI和GDI +良好地互操作。唯一的问题是,许多开发人员无法要求所有客户升级到Windows Vista或更高版本。支持XP仍然是一个有价值的目标(至少为这些用户提供最小的功能子集),如果你在Direct2D中编写整个用户界面或者新的花式框架,这是不太可能的。我还没有真正看到为标准的业务线应用程序切换到Direct2D的优势(我相信游戏和其他需要3D效果的程序有其优势)。您可能会对以下comparison between Direct2D and GDI感兴趣,它们都是二维的硬件加速图形API。

+0

我知道GDI和GDI +很快就不会去,可以使用,但MSDN有一个明确的“遗留”定义:'过时的技术,不应该用于新的应用程序.'。 – 2012-07-25 23:13:48

+2

那么我应该更清楚一点,那就是说特定的MSDN条目是错误的?或者至少是由营销部门的某个人写的,有点过分热心? – 2012-07-25 23:17:59

+0

嗯,我认为我们可以将“新”解释为从Windows 8开始,因为我知道“编写Metro风格的应用程序时不支持GDI和GDI +”,所以这取决于您的需求。 – 2012-07-25 23:24:25

2

除非你真的必须支持XP(让它已经死掉!),我会极力鼓励使用Direct2D。有多种原因的Direct2D是有道理的,所有发展:

  • 通常更快的渲染(化名和抗锯齿渲染)
  • 由于Vista的推出,GDI不HW accelleration高度crippeld(因新drivermodel)与Direct3D的(如果你需要它),DirectWrite的,DirectComposition等
  • 更好地整合
  • 更好地利用新的GPU功能
  • 许多位图效果预先内置-
  • GDI是不允许的Metro风格的应用程序

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

+2

不幸的是,据我所知,业内仍有很多用户仍在运行XP,而私人家庭用户由于各种原因拒绝XP以外的任何其他用途,无论是硬件限制还是以往。总而言之,这会给任何希望编写应用程序并拥有最广泛用户群的人带来更大压力。 – johnathon 2012-12-28 14:39:05