グラフィック オブジェクト
Windows には、デバイス コンテキストで使用する、さまざまな描画ツールが用意されています。 線を描画するためのペン、内部を塗りつぶすためのブラシ、およびテキストを描画するためのフォントがあります。 MFC には、Windows の描画ツールに相当するグラフィック オブジェクト クラスがあります。 利用できるクラスとそれに相当する Windows グラフィック デバイス インターフェイス (GDI: Graphics Device Interface) のハンドルの型を次の表に示します。
注意
GDI+ は Windows XP に含まれており、Windows NT 4.0 SP6、Windows 2000、Windows 98、および Windows Me では再頒布可能パッケージとして入手できます。 最新の再頒布パッケージをダウンロードするには、https://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm を参照してください。 詳細については、MSDN の GDI + SDK ドキュメントを参照してください。https://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlus.asp。
ここでは、グラフィック オブジェクト クラスの使い方について説明します。
Windows GDI オブジェクトのクラス
Class |
Windows のハンドル型 |
---|---|
HPEN |
|
HBRUSH |
|
HFONT |
|
HBITMAP |
|
HPALETTE |
|
HRGN |
注意
CImage クラスでは、拡張ビットマップがサポートされています。
クラス ライブラリ内の各グラフィック オブジェクト クラスには、それぞれのクラスのグラフィック オブジェクトを作成するコンストラクターがあります。グラフィック オブジェクトは、CreatePen などの該当する作成用関数を使って初期化する必要があります。
クラス ライブラリの各グラフィック オブジェクト クラスには、MFC オブジェクトを該当する Windows のハンドルにキャストする、キャスト演算子が用意されています。 このハンドルは、そのオブジェクトによって分離されるまで有効です。 ハンドルを分離するには、オブジェクトの Detach メンバー関数を使用します。
次のコードは、CPen オブジェクトを Windows のハンドルにキャストします。
CPen myPen;
myPen.CreatePen(PS_COSMETIC, 1, RGB(255,255,0));
HPEN hMyPen = (HPEN)myPen;
デバイス コンテキストでグラフィック オブジェクトを作成するには
スタック フレームでグラフィック オブジェクトを定義します。 CreatePen など、それぞれの型固有の作成関数で初期化します。 または、コンストラクターでオブジェクトを初期化します。 「1 段階でのオブジェクトの構築と 2 段階でのオブジェクトの構築」で説明されているコード例を参照してください。
オブジェクトを現在のデバイス コンテキストに選択し、前に選択した古いグラフィック オブジェクトを保存します。
現在のグラフィック オブジェクトを使い終わったら、古いグラフィック オブジェクトをデバイス コンテキストに選択し直して、状態を復元します。
フレームに割り当てられたグラフィック オブジェクトは、スコープからはずれたときに自動的に削除されます。
注意
グラフィック オブジェクトを繰り返し使用する場合は、グラフィック オブジェクトをいったん割り当て、必要になるたびにデバイス コンテキストに選択します。 この場合、オブジェクトが不要になったときは、必ず削除します。