グラフィック オブジェクト
Windows には、さまざまなデバイス コンテキストで使用する描画ツールが用意されています。 たとえば、線を描画するためのペン、内部を塗りつぶすためのブラシ、テキストを描画するためのフォントがあります。 MFC には、Windows の描画ツールと同等のグラフィック オブジェクト クラスが用意されています。 使用可能なクラスと、それに対応する Windows グラフィックス デバイス インターフェイス (GDI) ハンドル型を次の表に示します。
Note
詳細については、GDI+ SDK ドキュメントを参照してください。
この記事では、これらのグラフィック オブジェクト クラスの使用方法について説明します。
Windows GDI オブジェクトのクラス
クラス | Windows のハンドル型 |
---|---|
Cpen | HPEN |
Cbrush | HBRUSH |
Cfont | HFONT |
Cbitmap | HBITMAP |
Cpalette | HPALETTE |
Crgn | HRGN |
Note
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 段階での構築に関するページを参照してください。現在のデバイス コンテキストへのオブジェクトを選択し、以前に選択されていた古いグラフィック オブジェクトを保存します。
現在のグラフィック オブジェクトの操作が完了したら、古いグラフィック オブジェクトをデバイス コンテキストに選択してその状態を復元します。
スコープが終了したときにフレームによって割り当てられたグラフィック オブジェクトが自動的に削除されるように設定します。
Note
グラフィック オブジェクトを繰り返し使用する場合は、1 回割り当てておけば、後で必要になったときに各デバイス コンテキストに選択できます。 これらのオブジェクトが不要になったときは必ず削除してください。