グラフィック オブジェクト
更新 : 2007 年 11 月
Windows には、デバイス コンテキストで使用する、さまざまな描画ツールが用意されています。線を描画するためのペン、内部を塗りつぶすためのブラシ、およびテキストを描画するためのフォントがあります。MFC には、Windows の描画ツールに相当するグラフィック オブジェクト クラスがあります。利用できるクラスとそれに相当する Windows グラフィック デバイス インターフェイス (GDI: Graphics Device Interface) のハンドルの型を次の表に示します。
メモ : |
---|
Windows XP には GDI+ が含まれています。また、Windows NT 4.0 SP6、Windows 2000、Windows 98、および Windows Me 対応の再頒布可能な GDI+ も用意されています。最新の再頒布パッケージをダウンロードするには、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 オブジェクトのクラス
クラス |
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 段階でのオブジェクトの構築」で説明されているコード例を参照してください。
オブジェクトを現在のデバイス コンテキストに選択し、前に選択した古いグラフィック オブジェクトを保存します。
現在のグラフィック オブジェクトを使い終わったら、古いグラフィック オブジェクトをデバイス コンテキストに選択し直して、状態を復元します。
フレームに割り当てられたグラフィック オブジェクトは、スコープからはずれたときに自動的に削除されます。
メモ : |
---|
グラフィック オブジェクトを繰り返し使用する場合は、グラフィック オブジェクトをいったん割り当て、必要になるたびにデバイス コンテキストに選択します。この場合、オブジェクトが不要になったときは、必ず削除します。 |