【C++】「Windows」アプリケーションで「画像」を「表示」「コントロール」する方法

【C++】
「Windows」アプリケーションで「画像」を「表示」「コントロール」する方法




「Windows」アプリケーションで、
「画像」を「表示」「コントロール」する方法をまとめています。




詳しくは、
下記をご参照ください。



INDEX


グラフィックスサブシステム「GDI+」の使い方


「Windows]の「グラフィックスサブシステム」

グラフィックスサブシステム「GDI+」の使い方


「GDI+」の本体は、
「gdiplus.dll」という
「DLLファイル(Dynamic Link Library)」。

「gdiplus.dll」を利用するには、
・ヘッダファイル「gdiplus.h」をインクルードして使用する。
・「gdiplus.dll」を参照する
という手続きが必要。

もしくは、
下記の「文」を
「ソースコード」「ヘッダファイル」の
いずれかに記述する。
#pragma comment(lib,"gdiplus.lib")

上記の文を
ファイルの最初の部分に記述することで、
「コンパイラ」が読み込むと、
「リンカ」に指定した依存ファイルを読み込むように指示を出してくれる。




「gdiplus.dll」を参照する方法

「gdiplus.dll」を参照するには、
・「プロジェクト名」を「右クリック」
・「プロパティ」を選択
・「リンカ」を展開する
・「入力」を選択
・「gdiplus.dll」と入力
・「OKボタン」を選択


参照をしなくても良い「DLLファイル」もある。
「Win32 API」の「DLLファイル」は、
既に「Win32 API」の「プロジェクト」で、
あらかじめ参照されている。
参照されている「DLLファイル」を
再度参照する必要はない。



通常のライブラリファイルは、
コンパイル時に「実行ファイル(exe)」に取り込まれる。
「DLLファイル」は、
コンパイルをしても、「実行ファイル(exe)」に取り込まれない。
別ファイルのままで維持され、
実行ファイルを実行時に、
一緒にメモリに読み込まれて動作する。
他のプログラムによって、
メモリに読み込まれていた場合は、
共有することになっているので、
「ファイルサイズ」「メモリ使用量」を節約できる。


Back

「Windows]の「グラフィックスサブシステム」


「Windows]の「グラフィックスサブシステム」には、

・Direct 2D / Direct Write
・WPF
・Direct 3D
・GDI+
・GDI

などがあります。
一番初期の「グラフィックスサブシステム」は、
「GDI」で、現在の基盤となっている「サブシステム」。

一番新しい「グラフィックスサブシステム」は、
「Direct 2D / Direct Write」で、
新しい順に並べています。


「Windows」では、
古い「グラフィックスサブシステム」も搭載し続けているので、
選択肢が「5つ」もある。
現在では、「GDI+」を使用するのが無難。
「Direct 2D」は、「GDI+」の後継機なので、
乗り換えるのが、比較的、簡単と言われている。



GDI

「GDI (Graphics Device Interface)」は、
初期のWindowsから搭載されていた「グラフィックスサブシステム」。
「描画用ハードウェアの窓口」として作成されたサブシステム。

「グラフィックスサブシステム」は、
ウィンドウに「画像」「図」「文字」を描いたりする「サブシステム」。
「画面描画を担当するOSの一部」。

「サブシステム(Subsystem)は、
「システムの一部」という意味。

「Windows 3.0」ごろから採用されている「サブシステム」。
「GDI」対応ビデオカードは、Windows全体の動作速度が加速することから
「Windowsアクセラレータ」と呼ばれている。

現在も搭載はされているが、
できないことも多く、
「GDI+」を利用するのが得策。



GDI+

「Windows XP」で追加された
新しいグラフィックサブシステム「GDI+(Graphics Device Interface Plus)」。

従来の「GDI」は、
座標を「整数」で指定していたが、
新しい「GDI+(Graphics Device Interface Plus)」は、
座標の指定を「float型」で指定する。
「float型」の数字で指定することで、
より繊細なグラフィックが描けるようになった。
「画像ファイル」の読み書きに対応し、
画像データのの「半透明合成」なども可能になった。
「C++」の文法が使用されていて、
「GDI」とは扱いが異なる。
画面に「GDI」「GDI+」の関数を合わせて使用することは可能。



Direct 3D

「Direct 3D」は、
「ゲーム用」に作成された「グラフィックスサブシステム」。
「Direct 3D」は、
「3Dビデオカード」に直接命令を送るために設計されたもので、
「GDI」「GDI+」とは、
扱い方も用途も大きく異なる。

「Windows Vista」「Windows 7」で、
ウィンドウを重ねて、デスクトップ表示するのに、
「Direct 3D」の機能を使用している。



WPF

「WPF(Windows Presentation Foundation)」は、
「Windows Vista」で追加された。

「WPF」は、
「グラフィックス」「ボタン」「テキストボックス」などのコントロールも可能。
開発元は、「マイクロソフト社」。

「WPF」は、古くなった「Win32」「GDI」を一新する目的だったが、
使用言語が、「C#」「VB.NET」「C++/CLI」などを使用。
従来の「C言語」「C++」ではないので、
対応プリケーションは少数となっている。


Direct 2D / Direct Write

「Direct 2D / Direct Write」は、
「Windows 7」で新たに追加された「グラフィックスサブシステム」。
「Direct 2D」は、
一般的な「グラフィックス」の描画を担当。
「GDI+」の後継機。

「Direct Write」は、
「文字」の描画を担当。

「Direct 3D」は、
「3D」を担当している。

「Direct 3D」との組み合わせが良くできているそうです。

「WPF」とは異なり、
「C言語」「C++」で指示ができるので、
「GDI」「GDI+」の関数と一緒に使用することも可能。

「Internet Explorer」「Firefox」などが
「ブラウザ」で採用することを発表している。



Back