MSDN のリストによると、GDI と GDI+ はどちらもレガシーです。では、Windows API を使用してアプリケーションを作成する場合、2D グラフィックスをレンダリングするには何を使用すればよいでしょうか?
Direct2D、WIC、DirectComposition (これは初めてです)、GDI+、GDI?
注: 2D ゲームではなく、2D 画像のみです。
基本的なニーズには、GDI または GDI+ のいずれかが適しています。
OS はまだ GDI をあちこちで使用しているため、「レガシー」が何を意味するのかよくわかりません。そのような言葉は一般的に意味を持たないので、無視してもそれほど悪いとは思わないでください. これらの API に「レガシー」というラベルを付けた人は、おそらく、Win32 のすべてがレガシーであり、彼らが大好きなこれらの「最新の」GUI フレームワークが Win32 の上に構築されていることを認識せずに言っている人の 1 人です。それなしで機能する。
GDI+ が提供する追加機能 (透過性など) が必要な場合や、C++ でプログラミングしていて、GDI のフラットな C スタイル API よりもクラスベースの API を好む場合は、GDI+ を使用してください。ただし、アプリで GDI+ を使用する場合は、Gdiplus.dll
Windows 2000 以前のバージョンを実行しているユーザーにライブラリを再配布する必要があることに注意してください。GDI ベースのアプリは、常にすぐに使用できます。
新しい候補を調査するべきではないと言っているわけではありません。おそらく、Direct2D は GDI および GDI+ とうまく相互運用できるように設計されています。唯一の問題は、多くの開発者が、すべてのクライアントを Windows Vista 以降にアップグレードするよう要求する立場にないことです。XP をサポートすることは、依然として価値のある目標のように思えますが (少なくとも、これらのユーザーに最小限の機能サブセットを提供することはできます)、UI 全体を Direct2D または新しい手の込んだフレームワークの 1 つで作成する場合、それは実際には不可能です。私は、標準の基幹業務アプリで Direct2D に切り替える利点を実際には見ていません (3D 効果を必要とするゲームやその他のプログラムには利点があると確信しています)。次の Direct2D と GDI の比較に興味があるかもしれませんであり、どちらも 2 次元のハードウェア アクセラレーション グラフィックス API です。
本当にXP をサポートする必要がない限り(もうやめておきましょう!)、Direct2D を使用することを強くお勧めします。Direct2D がすべての新しい開発に適している理由は複数あります。
したがって、新しいアプリケーションを始めようとしている人には、GDI/GDI+ の代わりに Direct2D を使用することをお勧めします。