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 オブジェクト」を参照してください。

継承階層

CObject

CGdiObject

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::BitBltSetDIBits などの関数を使用して、 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 メンバー関数を呼び出すときに返す以外は、これらの値を使用しません。

関連項目

MFC サンプル MDI
CGdiObject クラス
階層図