2012-07-25 42 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