5

MSDN のリストによると、GDI と GDI+ はどちらもレガシーです。では、Windows API を使用してアプリケーションを作成する場合、2D グラフィックスをレンダリングするには何を使用すればよいでしょうか?

Direct2D、WIC、DirectComposition (これは初めてです)、GDI+、GDI?

注: 2D ゲームではなく、2D 画像のみです。

4

2 に答える 2

4

基本的なニーズには、GDI または GDI+ のいずれかが適しています。

OS はまだ GDI をあちこちで使用しているため、「レガシー」が何を意味するのかよくわかりません。そのような言葉は一般的に意味を持たないので、無視してもそれほど悪いとは思わないでください. これらの API に「レガシー」というラベルを付けた人は、おそらく、Win32 のすべてがレガシーであり、彼らが大好きなこれらの「最新の」GUI フレームワークが Win32 の上に構築されていることを認識せずに言っている人の 1 人です。それなしで機能する。

GDI+ が提供する追加機能 (透過性など) が必要な場合や、C++ でプログラミングしていて、GDI のフラットな C スタイル API よりもクラスベースの API を好む場合は、GDI+ を使用してください。ただし、アプリで GDI+ を使用する場合は、Gdiplus.dllWindows 2000 以前のバージョンを実行しているユーザーにライブラリを再配布する必要があることに注意してください。GDI ベースのアプリは、常にすぐに使用できます。

新しい候補を調査するべきではないと言っているわけではありません。おそらく、Direct2D は GDI および GDI+ とうまく相互運用できるように設計されています。唯一の問題は、多くの開発者が、すべてのクライアントを Windows Vista 以降にアップグレードするよう要求する立場にないことです。XP をサポートすることは、依然として価値のある目標のように思えますが (少なくとも、これらのユーザーに最小限の機能サブセットを提供することはできます)、UI 全体を Direct2D または新しい手の込んだフレームワークの 1 つで作成する場合、それは実際には不可能です。私は、標準の基幹業務アプリで Direct2D に切り替える利点を実際には見ていません (3D 効果を必要とするゲームやその他のプログラムには利点があると確信しています)。次の Direct2D と GDI の比較に興味があるかもしれませんであり、どちらも 2 次元のハードウェア アクセラレーション グラフィックス API です。

于 2012-07-25T23:12:07.373 に答える
2

本当にXP をサポートする必要がない限り(もうやめておきましょう!)、Direct2D を使用することを強くお勧めします。Direct2D がすべての新しい開発に適している理由は複数あります。

  • 一般的に高速なレンダリング (エイリアスおよびアンチエイリアス レンダリング)
  • Vista が導入されて以来、GDI はありません HW アクセラレーションは非常に不自由です (新しいドライバーモデルのため)
  • Direct3D (必要な場合)、DirectWrite、DirectComposition などとのより良い統合。
  • 新しい GPU 機能のより良い利用
  • 多くのビットマップ効果があらかじめ組み込まれています
  • GDI は Metro スタイル アプリでは許可されていません

したがって、新しいアプリケーションを始めようとしている人には、GDI/GDI+ の代わりに Direct2D を使用することをお勧めします。

于 2012-07-31T14:52:23.017 に答える