CBitmap
クラス
Windows のグラフィック デバイス インターフェイス (GDI: Graphics Device Interface) のビットマップをカプセル化したもので、ビットマップを操作するためのメンバー関数を提供します。
構文
class CBitmap : public CGdiObject
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CBitmap::CBitmap |
CBitmap オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CBitmap::CreateBitmap |
指定した幅、高さ、およびビット パターンを持つデバイス依存のメモリ ビットマップを使用してオブジェクトを初期化します。 |
CBitmap::CreateBitmapIndirect |
BITMAP 構造体で指定された幅、高さ、ビット パターン (指定されている場合) を使用して、ビットマップを使用してオブジェクトを初期化します。 |
CBitmap::CreateCompatibleBitmap |
指定したデバイスと互換性を持つように、ビットマップを使用してオブジェクトを初期化します。 |
CBitmap::CreateDiscardableBitmap |
指定したデバイスと互換性のある破棄可能なビットマップを使用してオブジェクトを初期化します。 |
CBitmap::FromHandle |
Windows HBITMAP ビットマップへのハンドルを指定すると、CBitmap オブジェクトへのポインターを返します。 |
CBitmap::GetBitmap |
BITMAP 構造体にビットマップに関する情報を入力します。 |
CBitmap::GetBitmapBits |
指定したビットマップのビットを指定したバッファーにコピーします。 |
CBitmap::GetBitmapDimension |
ビットマップの幅と高さを返します。 高さと幅は、 SetBitmapDimension メンバー関数によって以前に設定されているものと見なされます。 |
CBitmap::LoadBitmap |
アプリケーションの実行可能ファイルから名前付きビットマップ リソースを読み込み、そのビットマップをオブジェクトにアタッチして、オブジェクトを初期化します。 |
CBitmap::LoadMappedBitmap |
ビットマップを読み込み、色を現在のシステムの色にマップします。 |
CBitmap::LoadOEMBitmap |
定義済みの Windows ビットマップを読み込み、ビットマップをオブジェクトにアタッチして、オブジェクトを初期化します。 |
CBitmap::SetBitmapBits |
ビットマップのビットを指定したビット値に設定します。 |
CBitmap::SetBitmapDimension |
ビットマップに幅と高さを 0.1 mm 単位で割り当てます。 |
パブリック演算子
名前 | 説明 |
---|---|
CBitmap::operator HBITMAP |
CBitmap オブジェクトにアタッチされている Windows ハンドルを返します。 |
解説
CBitmap
オブジェクトを使用するには、オブジェクトを構築し、初期化メンバー関数のいずれかを使用してビットマップ ハンドルをアタッチしてから、オブジェクトのメンバー関数を呼び出します。
CBitmap
などのグラフィック オブジェクトの使用方法の詳細については、「Graphic オブジェクト」を参照してください。
継承階層
CBitmap
要件
ヘッダー: afxwin.h
CBitmap::CBitmap
CBitmap
オブジェクトを構築します。
CBitmap();
解説
結果のオブジェクトは、初期化メンバー関数のいずれかで初期化する必要があります。
CBitmap::CreateBitmap
指定した幅、高さ、ビット パターンに設定されている、デバイス依存のメモリ ビットマップを初期化します。
BOOL CreateBitmap(
int nWidth,
int nHeight,
UINT nPlanes,
UINT nBitcount,
const void* lpBits);
パラメーター
nWidth
ビットマップの幅 (ピクセル単位) を指定します。
nHeight
ビットマップの高さ (ピクセル単位) を指定します。
nPlanes
ビットマップ内でのカラー プレーンの数を指定します。
nBitcount
表示ピクセルごとのカラー ビット数を指定します。
lpBits
初期のビットマップのビット値を含むバイト配列を指します。 NULL
されている場合、新しいビットマップは初期化されていないままです。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
カラー ビットマップの場合、 nPlanes
パラメーターまたは nBitcount
パラメーターを 1 に設定する必要があります。 両方のパラメーターを 1 に設定すると、 CreateBitmap
によってモノクロのビットマップが作成されます。
ビットマップはディスプレイ デバイスに対して直接選択することはできませんが、 CDC::SelectObject
を使用して "メモリ デバイス コンテキスト" の現在のビットマップとして選択し、 CDC::BitBlt
関数を使用して互換性のあるデバイス コンテキストにコピーできます。
CBitmap
関数によって作成された CreateBitmap
オブジェクトでの作業終了後、デバイス コンテキスト外のビットマップを最初に選択し、次に CBitmap
オブジェクトを削除します。
詳細については、BITMAP
構造のbmBits
フィールドの説明を参照してください。 BITMAP
構造体は、CBitmap::CreateBitmapIndirect
メンバー関数の下で説明します。
CBitmap::CreateBitmapIndirect
lpBitmap
が指す構造体で指定された幅、高さ、ビット パターン (指定されている場合) を持つビットマップを初期化します。
BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
パラメーター
lpBitmap
ビットマップに関する情報を含む BITMAP
構造体を指します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
ビットマップは、ディスプレイ デバイスに対して直接選択することはできませんが、 CDC::SelectObject
を使用してメモリ デバイス コンテキストの現在のビットマップとして選択し、 CDC::BitBlt
または CDC::StretchBlt
関数を使用して互換性のあるデバイス コンテキストにコピーできます。 ( CDC::PatBlt
関数は、現在のブラシのビットマップをディスプレイ デバイス コンテキストに直接コピーできます)。
GetObject
関数を使用して、lpBitmap
パラメーターが指すBITMAP
構造体が入力されている場合、ビットマップのビットは指定されず、ビットマップは初期化されません。 アプリケーションは、ビットマップを初期化するために、 CDC::BitBlt
や SetDIBits
などの関数を使用して、 CGdiObject::GetObject
の最初のパラメーターで識別されたビットマップから、 CreateBitmapIndirect
によって作成されたビットマップにビットをコピーできます。
CreateBitmapIndirect
関数を使用して作成したCBitmap
オブジェクトで終了したら、まずデバイス コンテキストからビットマップを選択してから、CBitmap
オブジェクトを削除します。
CBitmap::CreateCompatibleBitmap
pDC
で指定されたデバイスと互換性のあるビットマップを初期化します。
BOOL CreateCompatibleBitmap(
CDC* pDC,
int nWidth,
int nHeight);
パラメーター
pDC
デバイス コンテキストを指定します。
nWidth
ビットマップの幅 (ピクセル単位) を指定します。
nHeight
ビットマップの高さ (ピクセル単位) を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
ビットマップには、指定したデバイス コンテキストと同じ数のカラー プレーンまたはピクセル単位の同じビット形式があります。 pDC
で指定されたものと互換性のある任意のメモリ デバイスの現在のビットマップとして選択できます。
pDC
がメモリ デバイス コンテキストの場合、返されるビットマップは、そのデバイス コンテキストで現在選択されているビットマップと同じ形式になります。 "メモリ デバイス コンテキスト" は、表示サーフェイスを表すメモリブロックです。 互換性のあるデバイスの実際の表示画面にコピーする前に、メモリ内のイメージを準備するために使用できます。
メモリ デバイス コンテキストが作成されると、GDI は自動的にモノクロストックビットマップを選択します。
カラー メモリ デバイス コンテキストではカラー ビットマップまたはモノクロ ビットマップを選択できるため、 CreateCompatibleBitmap
関数によって返されるビットマップの形式は常に同じではありません。ただし、非メモリ デバイス コンテキストの互換性のあるビットマップの形式は常にデバイスの形式になります。
CreateCompatibleBitmap
関数を使用して作成したCBitmap
オブジェクトで終了したら、まずデバイス コンテキストからビットマップを選択してから、CBitmap
オブジェクトを削除します。
CBitmap::CreateDiscardableBitmap
pDC
によって識別されるデバイス コンテキストと互換性のある破棄可能なビットマップを初期化します。
BOOL CreateDiscardableBitmap(
CDC* pDC,
int nWidth,
int nHeight);
パラメーター
pDC
デバイス コンテキストを指定します。
nWidth
ビットマップの幅 (ビット単位) を指定します。
nHeight
ビットマップの高さをビット単位で指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
ビットマップには、指定したデバイス コンテキストと同じ数のカラー プレーンまたはピクセル単位の同じビット形式があります。 アプリケーションは、このビットマップを、 pDC
で指定されたものと互換性のあるメモリ デバイスの現在のビットマップとして選択できます。
この関数によって作成されたビットマップは、アプリケーションが表示コンテキストに選択していない場合にのみ破棄できます。 選択されていないときに Windows によってビットマップが破棄され、アプリケーションが後でビットマップを選択しようとすると、 CDC::SelectObject
関数は NULL を返します。
CreateDiscardableBitmap
関数を使用して作成したCBitmap
オブジェクトで終了したら、まずデバイス コンテキストからビットマップを選択してから、CBitmap
オブジェクトを削除します。
CBitmap::FromHandle
Windows GDI ビットマップへのハンドルが指定されている場合は、 CBitmap
オブジェクトへのポインターを返します。
static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
パラメーター
hBitmap
Windows GDI ビットマップを指定します。
戻り値
成功した場合は CBitmap
オブジェクトへのポインター。それ以外の場合は NULL
。
解説
CBitmap
オブジェクトがまだハンドルにアタッチされていない場合は、一時的なCBitmap
オブジェクトが作成されてアタッチされます。 この一時 CBitmap
オブジェクトは、アプリケーションがイベント ループで次にアイドル時間を過ぎ、その時点ですべての一時グラフィック オブジェクトが削除されるまでのみ有効です。 もう 1 つの言い方は、一時オブジェクトが 1 つのウィンドウ メッセージの処理中にのみ有効であるという点です。
CBitmap::GetBitmap
添付ビットマップのイメージ プロパティを取得します。
int GetBitmap(BITMAP* pBitMap);
パラメーター
pBitMap
イメージのプロパティを受け取る BITMAP
構造体へのポインター。 このパラメーターは NULL
にすることはできません。
戻り値
メソッドが成功した場合は 0 以外、それ以外の場合は 0。
解説
CBitmap::GetBitmapBits
アタッチされたビットマップのビット パターンを指定したバッファーにコピーします。
DWORD GetBitmapBits(
DWORD dwCount,
LPVOID lpBits) const;
パラメーター
dwCount
バッファーにコピーするバイト数。
lpBits
ビットマップを受け取るバッファーへのポインター。
戻り値
メソッドが成功した場合にバッファーにコピーされたバイト数。それ以外の場合は 0。
解説
CBitmap::GetBitmap
を使用して、必要なバッファー サイズを決定します。
CBitmap::GetBitmapDimension
ビットマップの幅と高さを返します。
CSize GetBitmapDimension() const;
戻り値
ビットマップの幅と高さを 0.1 ミリメートル単位で測定します。 高さはCSize
オブジェクトのcy
メンバーにあり、幅はcx
メンバーにあります。 SetBitmapDimension
を使用してビットマップの幅と高さが設定されていない場合、戻り値は 0 になります。
解説
高さと幅は、 SetBitmapDimension
メンバー関数を使用して以前に設定されているものと見なされます。
CBitmap::LoadBitmap
lpszResourceName
によって名前が付けられたビットマップ リソースを読み込むか、アプリケーションの実行可能ファイルからnIDResource
の ID 番号で識別されます。
BOOL LoadBitmap(LPCTSTR lpszResourceName);
BOOL LoadBitmap(UINT nIDResource);
パラメーター
lpszResourceName
ビットマップ リソースの名前を含む null で終わる文字列を指します。
nIDResource
ビットマップ リソースのリソース ID 番号を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
読み込まれたビットマップは、 CBitmap
オブジェクトにアタッチされます。
lpszResourceName
で識別されるビットマップが存在しない場合、またはビットマップを読み込むためのメモリが不足している場合、関数は 0 を返します。
CGdiObject::DeleteObject
関数を使用して、LoadBitmap
関数によって読み込まれたビットマップを削除するか、CBitmap
デストラクターによってオブジェクトが削除されます。
注意事項
オブジェクトを削除する前に、デバイス コンテキストで選択されていないことを確認します。
次のビットマップが Windows バージョン 3.1 以降に追加されました。
OBM_UPARRROWIOBM_DNARROWIOBM_RGARROWIOBM_LFARROWI
これらのビットマップは、Windows バージョン 3.0 以前のデバイス ドライバーでは見つかりません。 ビットマップの完全な一覧とその外観については、Windows SDK を参照してください。
CBitmap::LoadMappedBitmap
ビットマップを読み込み、色を現在のシステムの色にマップするには、このメンバー関数を呼び出します。
BOOL LoadMappedBitmap(
UINT nIDBitmap,
UINT nFlags = 0,
LPCOLORMAP lpColorMap = NULL,
int nMapSize = 0);
パラメーター
nIDBitmap
ビットマップ リソースの ID。
nFlags
ビットマップのフラグ。 0 または CMB_MASKED
を指定できます。
lpColorMap
ビットマップのマップに必要な色情報を含む COLORMAP
構造体へのポインター。 このパラメーターが NULL
の場合、関数は既定のカラー マップを使用します。
nMapSize
lpColorMap
が指すカラー マップの数。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
既定では、 LoadMappedBitmap
はボタン グリフでよく使用される色をマップします。
マップされたビットマップの作成の詳細については、Windows 関数の CreateMappedBitmap
と Windows SDK の COLORMAP
構造を参照してください。
CBitmap::LoadOEMBitmap
Windows で使用される定義済みのビットマップを読み込みます。
BOOL LoadOEMBitmap(UINT nIDBitmap);
パラメーター
nIDBitmap
定義済みの Windows ビットマップの ID 番号。 使用可能な値は、次の WINDOWS.H
から一覧表示されます。
OBM_BTNCORNERS
OBM_BTSIZE
OBM_CHECK
OBM_CHECKBOXES
OBM_CLOSE
OBM_COMBO
OBM_DNARROW
OBM_DNARROWD
OBM_DNARROWI
OBM_LFARROW
OBM_LFARROWD
OBM_LFARROWI
OBM_MNARROW
OBM_OLD_CLOSE
OBM_OLD_DNARROW
OBM_OLD_LFARROW
OBM_OLD_REDUCE
OBM_OLD_RESTORE
OBM_OLD_RGARROW
OBM_OLD_UPARROW
OBM_OLD_ZOOM
OBM_REDUCE
OBM_REDUCED
OBM_RESTORE
OBM_RESTORED
OBM_RGARROW
OBM_RGARROWD
OBM_RGARROWI
OBM_SIZE
OBM_UPARROW
OBM_UPARROW
OBM_UPARROWD
OBM_ZOOM
OBM_ZOOMD
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
OBM_OLD
で始まるビットマップ名は、3.0 より前のバージョンの Windows で使用されるビットマップを表します。
OBM_
定数のいずれかを使用するには、WINDOWS.H
を含める前に定数OEMRESOURCE
を定義する必要があることに注意してください。
CBitmap::operator HBITMAP
CBitmap
オブジェクトのアタッチされた Windows GDI ハンドルを取得するには、この演算子を使用します。
operator HBITMAP() const;
戻り値
成功した場合は、 CBitmap
オブジェクトによって表される Windows GDI オブジェクトへのハンドル。それ以外の場合は NULL
。
解説
この演算子は、HBITMAP
オブジェクトの直接使用をサポートするキャスト演算子です。
グラフィック オブジェクトの使用方法の詳細については、Windows SDK の「 Graphic Objects 」を参照してください。
CBitmap::SetBitmapBits
ビットマップのビットを、 lpBits
によって指定されたビット値に設定します。
DWORD SetBitmapBits(
DWORD dwCount,
const void* lpBits);
パラメーター
dwCount
lpBits
が指すバイト数を指定します。
lpBits
CBitmap
オブジェクトにコピーするピクセル値を含むBYTE
配列を指します。 ビットマップがイメージを正しくレンダリングできるようにするには、 CBitmap
インスタンスの作成時に指定された高さ、幅、色深度の値に準拠するように値を書式設定する必要があります。 詳細については、CBitmap::CreateBitmap
を参照してください。
戻り値
ビットマップ ビットの設定に使用されるバイト数。関数が失敗した場合は 0。
CBitmap::SetBitmapDimension
ビットマップに幅と高さを 0.1 mm 単位で割り当てます。
CSize SetBitmapDimension(
int nWidth,
int nHeight);
パラメーター
nWidth
ビットマップの幅を指定します (0.1 ミリメートル単位)。
nHeight
ビットマップの高さを指定します (0.1 ミリメートル単位)。
戻り値
前のビットマップの寸法。 Height は、CSize
オブジェクトのcy
メンバー変数内にあり、幅は cx
メンバー変数内にあります。
解説
GDI は、アプリケーションが GetBitmapDimension
メンバー関数を呼び出すときに返す以外は、これらの値を使用しません。