CImage クラス

CImage では、JPEG、GIF、BMP、およびポータブル ネットワーク グラフィックス (PNG) 形式の画像を読み込んで保存する機能など、強化されたビットマップのサポートが提供されます。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

class CImage

メンバー

パブリック コンストラクター

名前 説明
CImage::CImage コンストラクター。

パブリック メソッド

名前 説明
CImage::AlphaBlend ピクセルが透明または半透明のビットマップを表示します。
CImage::Attach HBITMAPCImage オブジェクトにアタッチします。 非 DIB セクションのビットマップまたは DIB セクションのビットマップで使用できます。
CImage::BitBlt ソース デバイス コンテキストからこの現在のデバイス コンテキストにビットマップをコピーします。
CImage::Create DIB セクション ビットマップを作成し、以前に作成した CImage オブジェクトにアタッチします。
CImage::CreateEx DIB セクション ビットマップを (パラメーターを追加して) 作成し、以前に作成した CImage オブジェクトにアタッチします。
CImage::Destroy CImage オブジェクトからビットマップをデタッチして、ビットマップを破棄します。
CImage::Detach CImage オブジェクトからビットマップをデタッチします。
CImage::Draw コピー元の四角形からコピー先の四角形にビットマップをコピーします。 Draw は、必要に応じて、コピー先の四角形の寸法に合わせてビットマップを拡大または縮小し、アルファ ブレンドと透明色を処理します。
CImage::GetBits ビットマップの実際のピクセル値へのポインターを取得します。
CImage::GetBPP ピクセルあたりのビット数を取得します。
CImage::GetColorTable カラー テーブル内のエントリの範囲から赤、緑、青 (RGB) の色の値を取得します。
CImage::GetDC 現在のビットマップが選択されているデバイス コンテキストを取得します。
CImage::GetExporterFilterString 使用可能な画像形式とその説明を検索します。
CImage::GetHeight 現在の画像の高さをピクセル単位で取得します。
CImage::GetImporterFilterString 使用可能な画像形式とその説明を検索します。
CImage::GetMaxColorTableEntries カラー テーブルのエントリの最大数を取得します。
CImage::GetPitch 現在の画像のピッチをバイト単位で取得します。
CImage::GetPixel xy で指定されたピクセルの色を取得します。
CImage::GetPixelAddress 指定したピクセルのアドレスを取得します。
CImage::GetTransparentColor カラー テーブルでの透明な色の位置を取得します。
CImage::GetWidth 現在の画像の幅をピクセル単位で取得します。
CImage::IsDIBSection アタッチされたビットマップが DIB セクションかどうかを判断します。
CImage::IsIndexed ビットマップの色がインデックス付きパレットにマップされていることを示します。
CImage::IsNull ソース ビットマップが現在読み込まれているかどうかを示します。
CImage::IsTransparencySupported アプリケーションで透明なビットマップがサポートされているかどうかを示します。
CImage::Load 指定したファイルから画像を読み込みます。
CImage::LoadFromResource 指定したリソースから画像を読み込みます。
CImage::MaskBlt 指定したマスクとラスター操作を使用して、ソースとターゲットのビットマップのカラー データを結合します。
CImage::PlgBlt ソース デバイス コンテキストの四角形からターゲット デバイス コンテキストの平行四辺形へのビット ブロック転送を実行します。
CImage::ReleaseDC CImage::GetDC で取得されたデバイス コンテキストを解放します。
CImage::ReleaseGDIPlus GDI+ によって使用されているリソースを解放します。 グローバル CImage オブジェクトによって作成されたリソースを解放するために、呼び出す必要があります。
CImage::Save 指定した種類として画像を保存します。 Save では、画像オプションを指定できません。
CImage::SetColorTable DIB セクションのカラー テーブル内のエントリの範囲内の赤、緑、青 (RGB) の色の値を設定します。
CImage::SetPixel 指定した座標のピクセルを、指定した色に設定します。
CImage::SetPixelIndexed 指定した座標のピクセルを、パレットの指定したインデックスの色に設定します。
CImage::SetPixelRGB 指定した座標のピクセルを、指定した赤、緑、青 (RGB) の値に設定します。
CImage::SetTransparentColor 色のインデックスを透明として扱うように設定します。 透明にできるのはパレット内の 1 つの色のみです。
CImage::StretchBlt コピー元の四角形から、必要に応じてコピー先の四角形に合うようにビットマップを拡大または縮小してコピーします。
CImage::TransparentBlt ソース デバイス コンテキストからこの現在のデバイス コンテキストに透明な色のビットマップをコピーします。

パブリック演算子

名前 説明
CImage::operator HBITMAP CImage オブジェクトにアタッチされている Windows ハンドルを返します。

解説

CImage は、デバイスに依存しないビットマップ (DIB) セクションのビットマップでも、そうではないビットマップでも受け取ります。ただし、Create または CImage::Load は DIB セクションでのみ使用できます。 Attach を使用して非 DIB セクションのビットマップを CImage オブジェクトにアタッチできますが、その場合は、DIB セクションのビットマップのみをサポートする次の CImage メソッドを使用できません。

アタッチされたビットマップが DIB セクションかどうかを確認するには、IsDibSection を呼び出します。

Note

Visual Studio .NET 2003 では、作成された CImage オブジェクトの数がこのクラスに保持されます。 カウントが 0 になるたびに、GdiplusShutdown 関数が自動的に呼び出され、GDI+ によって使用されたリソースが解放されます。 これにより、DLL によって直接または間接に作成された CImage オブジェクトが常に適切に破棄され、GdiplusShutdownDllMain から呼び出されないことが保証されます。

Note

DLL でグローバル CImage オブジェクトを使用することは推奨されません。 DLL でグローバル CImage オブジェクトを使用する必要がある場合は、CImage::ReleaseGDIPlus を呼び出して、GDI+ によって使用されたリソースを明示的に解放します。

新しい CDCCImage を選択することはできません。 CImage によって、イメージ用に独自の HDC が作成されます。 HBITMAP は一度に 1 つの HDC にしか選択できないので、CImage に関連付けられている HBITMAP を別の HDC に選択することはできません。 CDC が必要な場合は、CImage から HDC を取得し、それを CDC::FromHandle に渡します。

// Get a CDC for the image
CDC* pDC = CDC::FromHandle(m_myImage.GetDC());

// Use pDC here
pDC->Rectangle(0, 40, 100, 50);
m_myImage.ReleaseDC();

MFC プロジェクトで CImage を使用する場合は、プロジェクト内のメンバー関数のうち、CBitmap オブジェクトへのポインターを渡す必要があるものに注意してください。 CMenu::AppendMenu などのそのような関数で CImage を使用する場合は、CBitmap::FromHandle を使用し、それを CImageHBITMAP に渡して、返された CBitmap* を使用します。

void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    UNREFERENCED_PARAMETER(nFlags);

    CBitmap* pBitmap = CBitmap::FromHandle(m_myImage);
    m_pmenuPop->AppendMenu(0, ID_BMPCOMMAND, pBitmap);
    ClientToScreen(&point);
    m_pmenuPop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x,
    point.y, this);
}

CImage を使用すると、DIB セクションの実際のビットにアクセスできます。 以前に Win32 HBITMAP または DIB セクションを使用していた任意の場所で、CImage オブジェクトを使用できます。

CImage は、MFC または ATL から使用できます。

Note

CImage を使用してプロジェクトを作成するときは、atlimage.h をインクルードする前に CString を定義する必要があります。 プロジェクトで MFC を使用せずに ATL を使用する場合は、atlimage.h をインクルードする前に atlstr.h をインクルードします。 プロジェクトで MFC を使用する場合 (または MFC をサポートする ATL プロジェクトの場合) は、atlimage.h をインクルードする前に afxstr.h をインクルードします。

同様に、atlimpl.cpp をインクルードする前に atlimage.h をインクルードする必要があります。 これを簡単に行うには、pch.h (Visual Studio 2017 以前では stdafx.h) に atlimage.h をインクルードします。

必要条件

ヘッダー:atlimage.h

CImage::AlphaBlend

ピクセルが透明または半透明のビットマップを表示します。

BOOL AlphaBlend(
    HDC hDestDC,
    int xDest,
    int yDest,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER) const throw();

BOOL AlphaBlend(
    HDC hDestDC,
    const POINT& pointDest,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER) const throw();

BOOL AlphaBlend(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER);

BOOL AlphaBlend(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER);

パラメーター

hDestDC
ターゲット デバイス コンテキストのハンドル。

xDest
ターゲットの四角形の左上隅の x 座標 (論理単位)。

yDest
ターゲットの四角形の左上隅の y 座標 (論理単位)。

bSrcAlpha
ソース ビットマップ全体で使用されるアルファ透明度の値。 既定の 0xff (255) では、画像が不透明であり、ピクセル単位のアルファ値のみを使用するものと想定されています。

bBlendOp
ソースとターゲットのビットマップのアルファ ブレンド関数、ソース ビットマップ全体に適用されるグローバル アルファ値、およびソース ビットマップの形式情報。 現在、ソースとターゲットのブレンド関数は AC_SRC_OVER に制限されています。

pointDest
ターゲットの四角形の左上隅を論理単位で示す POINT 構造体への参照。

nDestWidth
ターゲットの四角形の幅 (論理単位)。

nDestHeight
ターゲットの四角形の高さ (論理単位)。

xSrc
ソースの四角形の左上隅の論理 x 座標。

ySrc
ソースの四角形の左上隅の論理 y 座標。

nSrcWidth
ソースの四角形の幅 (論理単位)。

nSrcHeight
ソースの四角形の高さ (論理単位)。

rectDest
ターゲットを示す RECT 構造体への参照。

rectSrc
ソースを示す RECT 構造体への参照。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

アルファ ブレンド ビットマップは、ピクセル単位での色のブレンドをサポートします。

bBlendOp が既定値の AC_SRC_OVER に設定されている場合、ソース ビットマップは、ソース ピクセルのアルファ値に基づいて、ターゲット ビットマップの上に配置されます。

CImage::Attach

hBitmapCImage オブジェクトにアタッチします。

void Attach(HBITMAP hBitmap, DIBOrientation eOrientation = DIBOR_DEFAULT) throw();

パラメーター

hBitmap
HBITMAP へのハンドル。

eOrientation
ビットマップの向きを指定します。 以下のいずれかを指定できます。

  • DIBOR_DEFAULT ビットマップの向きは、オペレーティング システムによって決まります。

  • DIBOR_BOTTOMUP ビットマップの行は逆の順序です。 これにより、CImage::GetBits ではビットマップ バッファーの末尾に付いポインターが返され、CImage::GetPitch では負の数値が返されます。

  • DIBOR_TOPDOWN ビットマップの行は上から下の順序です。 これにより、CImage::GetBits ではビットマップ バッファーの最初のバイトへのポインターが返され、CImage::GetPitch では正の数値が返されます。

解説

ビットマップは、非 DIB セクションのビットマップでも DIB セクションのビットマップでもかまいません。 DIB セクションのビットマップでのみ使用できるメソッドの一覧については、IsDIBSection に関する説明を参照してください。

CImage::BitBlt

ソース デバイス コンテキストからこの現在のデバイス コンテキストにビットマップをコピーします。

BOOL BitBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    const POINT& pointDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const POINT& pointSrc,
    DWORD dwROP = SRCCOPY) const throw();

パラメーター

hDestDC
コピー先 HDC

xDest
ターゲットの四角形の左上隅の論理 x 座標。

yDest
ターゲットの四角形の左上隅の論理 y 座標。

dwROP
実行するラスター操作。 ラスター操作コードでは、ソースのビット、ターゲット、ターゲットを作成するためのパターン (現在選択されているブラシで定義されているもの) を組み合わせる方法を正確に定義します。 他のラスター操作コードとその説明の一覧については、Windows SDK の BitBlt に関する記事を参照してください。

pointDest
ターゲットの四角形の左上隅を示す POINT 構造体。

nDestWidth
ターゲットの四角形の幅 (論理単位)。

nDestHeight
ターゲットの四角形の高さ (論理単位)。

xSrc
ソースの四角形の左上隅の論理 x 座標。

ySrc
ソースの四角形の左上隅の論理 y 座標。

rectDest
ターゲットの四角形を示す RECT 構造体。

pointSrc
ソースの四角形の左上隅を示す POINT 構造体。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

詳細については、Windows SDK の BitBlt に関する記事を参照してください。

CImage::CImage

CImage オブジェクトを構築します。

CImage() throw();

解説

オブジェクトを作成したら、CreateLoadLoadFromResource、または Attach を呼び出して、ビットマップをオブジェクトにアタッチします。

Visual Studio では、作成された CImage オブジェクトの数がこのクラスに保持されます。 カウントが 0 になるたびに、GdiplusShutdown 関数が自動的に呼び出され、GDI+ によって使用されたリソースが解放されます。 これにより、DLL によって直接または間接に作成された CImage オブジェクトが常に適切に破棄され、GdiplusShutdown が DllMain から呼び出されないことが保証されます。

DLL でグローバル CImage オブジェクトを使用することは推奨されません。 DLL でグローバル CImage オブジェクトを使用する必要がある場合は、CImage::ReleaseGDIPlus を呼び出して、GDI+ によって使用されたリソースを明示的に解放します。

CImage::Create

CImage ビットマップを作成し、以前に作成した CImage オブジェクトにアタッチします。

BOOL Create(
    int nWidth,
    int nHeight,
    int nBPP,
    DWORD dwFlags = 0) throw();

パラメーター

nWidth
CImage ビットマップの幅 (ピクセル単位)。

nHeight
CImage ビットマップの高さ (ピクセル単位)。 nHeight が正の場合、ビットマップはボトムアップ DIB であり、原点は左下隅です。 nHeight が負の場合、ビットマップはトップダウン DIB であり、原点は左上隅です。

nBPP
ビットマップのピクセルあたりのビット数。 通常は 4、8、16、24、または 32 です。 白黒ビットマップまたはマスクの場合は 1 を指定できます。

dwFlags
ビットマップ オブジェクトにアルファ チャネルがあるかどうかを指定します。 次の値を 0 個以上組み合わせて指定できます。

  • createAlphaChannelnBPP が 32 で、eCompressionBI_RGB の場合にのみ使用できます。 指定した場合、作成される画像は、ピクセルごとにアルファ (透明度) 値を持ち、各ピクセルの 4 番目のバイトに格納されます (アルファのない 32 ビット画像では使用されません)。 CImage::AlphaBlend を呼び出すと、このアルファ チャネルが自動的に使用されます。

Note

CImage::Draw を呼び出すと、アルファ チャネルのある画像は自動的にターゲットにアルファ ブレンドされます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CImage::CreateEx

CImage ビットマップを作成し、以前に作成した CImage オブジェクトにアタッチします。

BOOL CreateEx(
    int nWidth,
    int nHeight,
    int nBPP,
    DWORD eCompression,
    const DWORD* pdwBitmasks = NULL,
    DWORD dwFlags = 0) throw();

パラメーター

nWidth
CImage ビットマップの幅 (ピクセル単位)。

nHeight
CImage ビットマップの高さ (ピクセル単位)。 nHeight が正の場合、ビットマップはボトムアップ DIB であり、原点は左下隅です。 nHeight が負の場合、ビットマップはトップダウン DIB であり、原点は左上隅です。

nBPP
ビットマップのピクセルあたりのビット数。 通常は 4、8、16、24、または 32 です。 白黒ビットマップまたはマスクの場合は 1 を指定できます。

eCompression
圧縮されたボトムアップ ビットマップの圧縮の種類を指定します (トップダウン DIB は圧縮できません)。 値は、次のいずれかです。

  • BI_RGB 形式は圧縮されません。 CImage::CreateEx を呼び出すときにこの値を指定することは、CImage::Create を呼び出すのと同じです。

  • BI_BITFIELDS 形式は圧縮されず、カラー テーブルは、各ピクセルのそれぞれ赤、緑、青の各成分を指定する 3 つの DWORD カラー マスクで構成されます。 これは、16 および 32 bpp のビットマップで使用する場合に有効です。

pdwBitfields
eCompressionBI_BITFIELDS に設定されている場合にのみ使用されます。それ以外の場合は、NULL でなければなりません。 3 つの DWORD ビットマスクの配列へのポインター。それぞれ、各ピクセルのどのビットが、色の赤、緑、青の成分に使用されるかを指定します。 ビットフィールドに対する制限については、Windows SDK の BITMAPINFOHEADER に関する記事を参照してください。

dwFlags
ビットマップ オブジェクトにアルファ チャネルがあるかどうかを指定します。 次の値を 0 個以上組み合わせて指定できます。

  • createAlphaChannelnBPP が 32 で、eCompressionBI_RGB の場合にのみ使用できます。 指定した場合、作成される画像は、ピクセルごとにアルファ (透明度) 値を持ち、各ピクセルの 4 番目のバイトに格納されます (アルファのない 32 ビット画像では使用されません)。 CImage::AlphaBlend を呼び出すと、このアルファ チャネルが自動的に使用されます。

    Note

    CImage::Draw を呼び出すと、アルファ チャネルのある画像は自動的にターゲットにアルファ ブレンドされます。

戻り値

正常終了した場合は、TRUE。 それ以外の場合 FALSEは .

次の例では、各ピクセルをエンコードするために 16 ビットを使用して、100x100 ピクセルのビットマップを作成します。 特定の 16 ビット ピクセルでは、ビット 0-3 で赤成分、ビット 4-7 で緑、ビット 8-11 で青がエンコードされています。 残りの 4 ビットは使用されません。

DWORD adwBitmasks[3] = { 0x0000000f, 0x000000f0, 0x00000f00 };
m_myImage.CreateEx(100, 100, 16, BI_BITFIELDS, adwBitmasks, 0);

CImage::Destroy

CImage オブジェクトからビットマップをデタッチして、ビットマップを破棄します。

void Destroy() throw();

CImage::Detach

CImage オブジェクトからビットマップをデタッチします。

HBITMAP Detach() throw();

戻り値

デタッチされたビットマップへのハンドル。ビットマップがアタッチされていない場合は NULL

CImage::Draw

ソース デバイス コンテキストから現在のデバイス コンテキストにビットマップをコピーします。

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight) const throw();

BOOL Draw(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc) const throw();

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest) const throw();

BOOL Draw(
    HDC hDestDC,
    const POINT& pointDest) const throw();

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight) const throw();

BOOL Draw(
    HDC hDestDC,
    const RECT& rectDest) const throw();

パラメーター

hDestDC
ターゲット デバイス コンテキストのハンドル。

xDest
ターゲットの四角形の左上隅の x 座標 (論理単位)。

yDest
ターゲットの四角形の左上隅の y 座標 (論理単位)。

nDestWidth
ターゲットの四角形の幅 (論理単位)。

nDestHeight
ターゲットの四角形の高さ (論理単位)。

xSrc
ソースの四角形の左上隅の x 座標 (論理単位)。

ySrc
ソースの四角形の左上隅の y 座標 (論理単位)。

nSrcWidth
ソースの四角形の幅 (論理単位)。

nSrcHeight
ソースの四角形の高さ (論理単位)。

rectDest
ターゲットを示す RECT 構造体への参照。

rectSrc
ソースを示す RECT 構造体への参照。

pointDest
ターゲットの四角形の左上隅を論理単位で示す POINT 構造体への参照。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

画像に透明色またはアルファ チャネルが含まれていない場合、DrawStretchBlt と同じ操作を実行します。 その場合、Draw は、必要に応じて、TransparentBlt または AlphaBlend のいずれかと同じ操作を実行します。

ソースの四角形を指定しないバージョンの Draw では、ソース画像全体が既定値になります。 ターゲットの四角形のサイズを指定しないバージョンの Draw では、ソース画像のサイズが既定値になり、拡大または縮小は行われません。

CImage::GetBits

ビットマップ内の特定のピクセルの実際のビット値へのポインターを取得します。

void* GetBits() throw();

戻り値

ビットマップ バッファーへのポインター。 ビットマップがボトムアップ DIB の場合、ポインターはバッファーの末尾付近を指します。 ビットマップがトップダウン DIB の場合、ポインターはバッファーの最初のバイトを指します。

解説

GetPitch によって返される値と共にこのポインターを使用すると、画像内の個々のピクセルを見つけて変更できます。

Note

このメソッドは、DIB セクションのビットマップのみをサポートします。そのため、DIB セクションのピクセルと同じ方法で、CImage オブジェクトのピクセルにアクセスします。 返されるポインターは、位置 (0, 0) のピクセルを指します。

CImage::GetBPP

ピクセルあたりのビット数の値を取得します。

int GetBPP() const throw();

戻り値

ピクセルあたりのビット数の値。

解説

この値によって、各ピクセルを定義するビットの数と、ビットマップでの色の最大数が決まります。

ピクセルあたりのビット数は、通常、1、4、8、16、24、または 32 です。 この値の詳細については、Windows SDK で BITMAPINFOHEADERbiBitCount メンバーに関する記事を参照してください。

CImage::GetColorTable

DIB セクションのパレット内のエントリの範囲から、赤、緑、青 (RGB) の色の値を取得します。

void GetColorTable(
    UINT iFirstColor,
    UINT nColors,
    RGBQUAD* prgbColors) const throw();

パラメーター

iFirstColor
取得する最初のエントリのカラー テーブル インデックス。

nColors
取得するカラー テーブル エントリの数。

prgbColors
カラー テーブル エントリを取得する RGBQUAD 構造体の配列へのポインター。

CImage::GetDC

現在画像が選択されているデバイス コンテキストを取得します。

HDC GetDC() const throw();

戻り値

デバイス コンテキストを識別するハンドル。

解説

GetDC の呼び出しごとに、その後で ReleaseDC を呼び出す必要があります。

CImage::GetExporterFilterString

画像の保存に使用できる画像形式を検索します。

static HRESULT GetExporterFilterString(
    CSimpleString& strExporters,
    CSimpleArray<GUID>& aguidFileTypes,
    LPCTSTR pszAllFilesDescription = NULL,
    DWORD dwExclude = excludeDefaultSave,
    TCHAR chSeparator = _T('|'));

パラメーター

strExporters
CSimpleString オブジェクトへの参照です。 詳細については、「解説」を参照してください。

aguidFileTypes
GUID の配列。各要素が文字列内のファイルの種類の 1 つに対応します。 下の pszAllFilesDescription の例では、aguidFileTypes[0]GUID_NULL であり、配列の残りの値は、現在のオペレーティング システムでサポートされている画像ファイル形式です。

Note

すべての定数の一覧については、Windows SDK で画像ファイル形式定数に関する記事を参照してください。

pszAllFilesDescription
このパラメーターが NULL でない場合、フィルター文字列の一覧の先頭にフィルターが 1 つ追加されます。 このフィルターは、その説明の現在の値が pszAllFilesDescription であり、一覧内の他のエクスポーターでサポートされている任意の拡張子のファイルを受け入れます。

次に例を示します。

//First filter in the list will be titled "All Image Files", and
//will accept files with any extension supported by any exporter.
CImage::GetExporterFilterString(
    strExporters, aguidFileTypes,
_T("All Image Files"));

dwExclude
一覧から除外するファイルの種類を指定するビット フラグのセット。 使用できるフラグは次のとおりです。

  • excludeGIF = 0x01 GIF ファイルを除外します。

  • excludeBMP = 0x02 BMP (Windows ビットマップ) ファイルを除外します。

  • excludeEMF = 0x04 EMF (拡張メタファイル) ファイルを除外します。

  • excludeWMF = 0x08 WMF (Windows メタファイル) ファイルを除外します。

  • excludeJPEG = 0x10 JPEG ファイルを除外します。

  • excludePNG = 0x20 PNG ファイルを除外します。

  • excludeTIFF = 0x40 TIFF ファイルを除外します。

  • excludeIcon = 0x80 ICO (Windows アイコン) ファイルを除外します。

  • excludeOther = 0x80000000 上の一覧にない他のファイルの種類を除外します。

  • excludeDefaultLoad = 0 読み込みの場合、すべてのファイルの種類を既定で含めます。

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF 保存の場合、これらのファイルは、通常、特別な要件があるため、既定で除外されます。

chSeparator
画像形式の間で使用される区切り記号。 詳細については、「解説」を参照してください。

戻り値

標準の HRESULT

解説

結果の形式文字列を MFC の CFileDialog オブジェクトに渡すことで、使用可能な画像形式のファイル拡張子をファイルの [名前を付けて保存] ダイアログ ボックスで公開できます。

strExporter パラメーターの形式は次のとおりです。

file description 0|*.ext0|file description 1|*.ext1|...file description N|*.extN||

で指定された区切り文字を指定|chSeparatorします。 次に例を示します。

"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"

この文字列を MFC CFileDialog オブジェクトに渡す場合は、既定の区切り記号|を使用します。 この文字列を共通の [ファイルの保存] ダイアログ ボックスに渡す場合は、null 区切り記号 '\0' を使用します。

CImage::GetHeight

画像の高さ (ピクセル単位) を取得します。

int GetHeight() const throw();

戻り値

画像の高さ (ピクセル単位)。

CImage::GetImporterFilterString

画像の読み込みに使用できる画像形式を検索します。

static HRESULT GetImporterFilterString(
    CSimpleString& strImporters,
    CSimpleArray<GUID>& aguidFileTypes,
    LPCTSTR pszAllFilesDescription = NULL,
    DWORD dwExclude = excludeDefaultLoad,
    TCHAR chSeparator = _T('|'));

パラメーター

strImporters
CSimpleString オブジェクトへの参照です。 詳細については、「解説」を参照してください。

aguidFileTypes
GUID の配列。各要素が文字列内のファイルの種類の 1 つに対応します。 下の pszAllFilesDescription の例では、*aguidFileTypes[0]*GUID_NULL であり、配列の残りの値は、現在のオペレーティング システムでサポートされている画像ファイル形式です。

Note

すべての定数の一覧については、Windows SDK で画像ファイル形式定数に関する記事を参照してください。

pszAllFilesDescription
このパラメーターが NULL でない場合、フィルター文字列の一覧の先頭にフィルターが 1 つ追加されます。 このフィルターは、その説明の現在の値が pszAllFilesDescription であり、一覧内の他のエクスポーターでサポートされている任意の拡張子のファイルを受け入れます。

次に例を示します。

//First filter in the list will be titled "All Image Files", and
//will accept files with any extension supported by any importer.
CImage::GetImporterFilterString(
    strImporters, aguidFileTypes,
_T("All Image Files"));

dwExclude
一覧から除外するファイルの種類を指定するビット フラグのセット。 使用できるフラグは次のとおりです。

  • excludeGIF = 0x01 GIF ファイルを除外します。

  • excludeBMP = 0x02 BMP (Windows ビットマップ) ファイルを除外します。

  • excludeEMF = 0x04 EMF (拡張メタファイル) ファイルを除外します。

  • excludeWMF = 0x08 WMF (Windows メタファイル) ファイルを除外します。

  • excludeJPEG = 0x10 JPEG ファイルを除外します。

  • excludePNG = 0x20 PNG ファイルを除外します。

  • excludeTIFF = 0x40 TIFF ファイルを除外します。

  • excludeIcon = 0x80 ICO (Windows アイコン) ファイルを除外します。

  • excludeOther = 0x80000000 上の一覧にない他のファイルの種類を除外します。

  • excludeDefaultLoad = 0 読み込みの場合、すべてのファイルの種類を既定で含めます。

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF 保存の場合、これらのファイルは、通常、特別な要件があるため、既定で除外されます。

chSeparator
画像形式の間で使用される区切り記号。 詳細については、「解説」を参照してください。

解説

結果の形式文字列を MFC の CFileDialog オブジェクトに渡すことで、使用可能な画像形式のファイル拡張子を [ファイルを開く] ダイアログ ボックスで公開できます。

strImporter パラメーターの形式は次のとおりです。

'file description 0|.ext0|file description 1|.ext1|...ファイルの説明 N|*.extN||

で指定された区切り文字を指定|chSeparatorします。 次に例を示します。

"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"

この文字列を MFC CFileDialog オブジェクトに渡す場合は、既定の区切り記号|を使用します。 この文字列を共通の [ファイルを開く] ダイアログ ボックスに渡す場合は、null 区切り記号'\0'を使用します。

CImage::GetMaxColorTableEntries

カラー テーブルのエントリの最大数を取得します。

int GetMaxColorTableEntries() const throw();

戻り値

カラー テーブル内のエントリの数。

解説

このメソッドは、DIB セクションのビットマップだけをサポートします。

CImage::GetPitch

画像のピッチを取得します。

int GetPitch() const throw();

戻り値

画像のピッチ。 戻り値が負の場合、ビットマップはボトムアップ DIB であり、原点は左下隅です。 戻り値が正の場合、ビットマップはトップダウン DIB であり、原点は左上隅です。

解説

ピッチは、1 つのビットマップの線の先頭と次のビットマップの線の先頭を表す 2 つのメモリ アドレスの間の距離 (バイト単位) です。 ピッチはバイト単位で測定されるため、画像のピッチはピクセル形式を決定するのに役立ちます。 ピッチには、ビットマップ用に予約されている追加のメモリが含まれることもあります。

画像の個々のピクセルを検索するには、GetPitchGetBits を使用します。

Note

このメソッドは、DIB セクションのビットマップだけをサポートします。

CImage::GetPixel

xy によって指定された位置にあるピクセルの色を取得します。

COLORREF GetPixel(int x, int y) const throw();

パラメーター

x
ピクセルの x 座標。

y
ピクセルの y 座標。

戻り値

ピクセルの赤、緑、青 (RGB) の値。 ピクセルが現在のクリッピング領域の外側にある場合、戻り値は CLR_INVALID になります。

CImage::GetPixelAddress

ピクセルの正確なアドレスを取得します。

void* GetPixelAddress(int x, int y) throw();

パラメーター

x
ピクセルの x 座標。

y
ピクセルの y 座標。

解説

アドレスは、ピクセルの座標、ビットマップのピッチ、およびピクセルあたりのビット数に基づいて決定されます。

1 ピクセルが 8 ビット未満の形式の場合、このメソッドからはそのピクセルが含まれるバイトのアドレスが返されます。 たとえば、1 ピクセルが 4 ビットの画像形式では、GetPixelAddress からはバイトの最初のピクセルのアドレスが返され、1 バイトあたり 2 ピクセルの計算を行う必要があります。

Note

このメソッドは、DIB セクションのビットマップだけをサポートします。

CImage::GetTransparentColor

カラー パレット内の透明色のインデックス位置を取得します。

LONG GetTransparentColor() const throw();

戻り値

透明色のインデックス。

CImage::GetWidth

画像の幅 (ピクセル単位) を取得します。

int GetWidth() const throw();

戻り値

ビットマップの幅 (ピクセル単位)。

CImage::IsDIBSection

アタッチされたビットマップが DIB セクションかどうかを判断します。

bool IsDIBSection() const throw();

戻り値

アタッチされたビットマップが DIB セクションの場合は TRUE。 それ以外の場合 FALSEは .

解説

ビットマップが DIB セクションでない場合は、DIB セクションのビットマップのみをサポートする次の CImage メソッドを使用できません。

CImage::IsIndexed

ビットマップのピクセルがカラー パレットにマップされるかどうかを判定します。

bool IsIndexed() const throw();

戻り値

インデックス付けされている場合は TRUE。それ以外の場合は FALSE

解説

このメソッドは、ビットマップが 8 ビット (256 色) 以下の場合にのみ TRUE を返します。

Note

このメソッドは、DIB セクションのビットマップだけをサポートします。

CImage::IsNull

ビットマップが現在読み込まれているかどうかを判定します。

bool IsNull() const throw();

解説

このメソッドは、ビットマップが現在読み込まれていない場合は TRUE を返します。それ以外の場合は FALSE を返します。

CImage::IsTransparencySupported

アプリケーションで透明なビットマップがサポートされているかどうかを示します。

static BOOL IsTransparencySupported() throw();

戻り値

現在のプラットフォームが透明度をサポートしている場合は 0 以外。 それ以外の場合は 0。

解説

戻り値が 0 ではなく、透明度がサポートされている場合、AlphaBlendTransparentBlt、または Draw を呼び出すと、透明色が処理されます。

CImage::Load

画像を読み込みます。

HRESULT Load(LPCTSTR pszFileName) throw();
HRESULT Load(IStream* pStream) throw();

パラメーター

pszFileName
読み込む画像ファイルの名前が含まれる文字列へのポインター。

pStream
読み込む画像ファイルの名前が含まれるストリームへのポインター。

戻り値

標準の HRESULT

解説

pszFileName または pStream で指定した画像を読み込みます。

有効な画像の種類は、BMP、GIF、JPEG、PNG、TIFF です。

CImage::LoadFromResource

BITMAP リソースから画像を読み込みます。

void LoadFromResource(
    HINSTANCE hInstance,
    LPCTSTR pszResourceName) throw();

void LoadFromResource(
    HINSTANCE hInstance,
    UINT nIDResource) throw();

パラメーター

hInstance
読み込む画像が含まれるモジュールのインスタンスへのハンドル。

pszResourceName
読み込む画像が格納されているリソースの名前が含まれる文字列へのポインター。

nIDResource
読み込むリソースの ID です。

解説

リソースの種類は BITMAP である必要があります。

CImage::MaskBlt

指定したマスクとラスター操作を使用して、ソースとターゲットのビットマップのカラー データを結合します。

BOOL MaskBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    HBITMAP hbmMask,
    int xMask,
    int yMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const POINT& pointSrc,
    HBITMAP hbmMask,
    const POINT& pointMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    HBITMAP hbmMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    const POINT& pointDest,
    HBITMAP hbmMask,
    DWORD dwROP = SRCCOPY) const throw();

パラメーター

hDestDC
実行可能ファイルにリソースが含まれるモジュールへのハンドル。

xDest
ターゲットの四角形の左上隅の x 座標 (論理単位)。

yDest
ターゲットの四角形の左上隅の y 座標 (論理単位)。

nDestWidth
ターゲットの四角形とソースのビットマップの幅 (論理単位)。

nDestHeight
ターゲットの四角形とソースのビットマップの高さ (論理単位)。

xSrc
ソースのビットマップの左上隅の論理 x 座標。

ySrc
ソースのビットマップの左上隅の論理 y 座標。

hbmMask
ソース デバイス コンテキストのカラー ビットマップと組み合わされた白黒マスク ビットマップへのハンドル。

xMask
hbmMask パラメーターで指定したマスク ビットマップの水平方向のピクセル オフセット。

yMask
hbmMask パラメーターで指定したマスク ビットマップの垂直方向のピクセル オフセット。

dwROP
ソースとターゲットのデータの組み合わせを制御するためにメソッドが使用する、前景と背景両方の 3 項ラスター演算コードを指定します。 背景ラスター演算コードは、この値の上位ワードの上位バイトに格納します。前景ラスター演算コードは、この値の上位ワードの下位バイトに格納します。この値の下位ワードは無視され、0 にする必要があります。 このメソッドのコンテキストにおける前景と背景の詳細については、Windows SDK の MaskBlt に関する記事を参照してください。 一般的なラスター演算コードの一覧については、Windows SDK の BitBlt に関する記事を参照してください。

rectDest
ターゲットを示す RECT 構造体への参照。

pointSrc
ソースの四角形の左上隅を示す POINT 構造体。

pointMask
マスク ビットマップの左上隅を示す POINT 構造体。

pointDest
ターゲットの四角形の左上隅を論理単位で示す POINT 構造体への参照。

戻り値

成功した場合は 0 以外。それ以外の場合は 0。

解説

このメソッドは、Windows NT バージョン 4.0 以降にのみ適用されます。

CImage::operator HBITMAP

CImage オブジェクトのアタッチされた Windows GDI ハンドルを取得するには、この演算子を使用します。 この演算子は、HBITMAP オブジェクトの直接使用をサポートするキャスト演算子です。

CImage::PlgBlt

ソース デバイス コンテキストの四角形からターゲット デバイス コンテキストの平行四辺形へのビット ブロック転送を実行します。

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    HBITMAP hbmMask = NULL) const throw();

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    HBITMAP hbmMask = NULL,
    int xMask = 0,
    int yMask = 0) const throw();

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    const RECT& rectSrc,
    HBITMAP hbmMask = NULL,
    const POINT& pointMask = CPoint(0, 0)) const throw();

パラメーター

hDestDC
ターゲット デバイス コンテキストのハンドル。

pPoints
ターゲットの平行四辺形の 3 つの角を示す論理空間内の 3 つの点の配列へのポインター。 ソースの四角形の左上隅がこの配列の 1 番目の点に、右上隅がこの配列の 2 番目の点に、左下隅が 3 番目の点にマップされます。 ソースの四角形の右下隅は、平行四辺形の暗黙の 4 番目の点にマップされます。

hbmMask
ソースの四角形の色をマスクするために使用されるオプションの白黒ビットマップへのハンドル。

xSrc
ソースの四角形の左上隅の x 座標 (論理単位)。

ySrc
ソースの四角形の左上隅の y 座標 (論理単位)。

nSrcWidth
ソースの四角形の幅 (論理単位)。

nSrcHeight
ソースの四角形の高さ (論理単位)。

xMask
白黒ビットマップの左上隅の x 座標。

yMask
白黒ビットマップの左上隅の y 座標。

rectSrc
ソースの四角形の座標を指定する RECT 構造体への参照。

pointMask
マスク ビットマップの左上隅を示す POINT 構造体。

戻り値

成功した場合は 0 以外。それ以外の場合は 0。

解説

hbmMask が有効な白黒ビットマップを示す場合、PlgBit はこのビットマップを使用して、ソースの四角形の色データのビットをマスクします。

このメソッドは、Windows NT バージョン 4.0 以降にのみ適用されます。 詳細については、Windows SDK の PlgBlt に関する記事を参照してください。

CImage::ReleaseDC

デバイス コンテキストを解放します。

void ReleaseDC() const throw();

解説

デバイス コンテキストで選択できるビットマップは一度に 1 つだけなので、GetDC を呼び出すたびに ReleaseDC を呼び出す必要があります。

CImage::ReleaseGDIPlus

GDI+ によって使用されているリソースを解放します。

void ReleaseGDIPlus() throw();

解説

グローバル CImage オブジェクトによって割り当てられたリソースを解放するには、このメソッドを呼び出す必要があります。 以下を参照してください。CImage::CImage

CImage::Save

指定したストリームまたはディスク上のファイルに画像を保存します。

HRESULT Save(
    IStream* pStream,
    REFGUID guidFileType) const throw();

HRESULT Save(
    LPCTSTR pszFileName,
    REFGUID guidFileType = GUID_NULL) const throw();

パラメーター

pStream
ファイル画像データが含まれる COM IStream オブジェクトへのポインター。

pszFileName
画像のファイル名へのポインター。

guidFileType
画像を保存するファイルの種類。 以下のいずれかを指定できます。

  • ImageFormatBMP 圧縮されていないビットマップ画像。

  • ImageFormatPNG ポータブル ネットワーク グラフィック (PNG) の圧縮された画像。

  • ImageFormatJPEG 圧縮された JPEG 画像。

  • ImageFormatGIF 圧縮された GIF 画像。

Note

すべての定数の一覧については、Windows SDK で画像ファイル形式定数に関する記事を参照してください。

戻り値

標準の HRESULT

解説

指定した名前と種類を使用して画像を保存するには、この間数を呼び出します。 guidFileType パラメーターを指定しないと、ファイル名のファイル拡張子を使用して画像形式が決定されます。 拡張子が指定されていない場合、画像は BMP 形式で保存されます。

CImage::SetColorTable

DIB セクションのパレット内のエントリの範囲に対する、赤、緑、青 (RGB) の色の値を設定します。

void SetColorTable(
    UINT iFirstColor,
    UINT nColors,
    const RGBQUAD* prgbColors) throw();

パラメーター

iFirstColor
設定する最初のエントリのカラー テーブル インデックス。

nColors
設定するカラー テーブル エントリの数。

prgbColors
カラー テーブル エントリを設定する RGBQUAD 構造体の配列へのポインター。

解説

このメソッドは、DIB セクションのビットマップだけをサポートします。

CImage::SetPixel

ビットマップ内の特定の位置にあるピクセルの色を設定します。

void SetPixel(int x, int y, COLORREF color) throw();

パラメーター

x
設定するピクセルの水平位置。

y
設定するピクセルの垂直位置。

color
ピクセルを設定する色。

解説

ピクセル座標が選択されているクリッピング領域の外側にある場合、このメソッドは失敗します。

CImage::SetPixelIndexed

カラー パレットの iIndex にある色にピクセルの色を設定します。

void SetPixelIndexed(int x, int y, int iIndex) throw();

パラメーター

x
設定するピクセルの水平位置。

y
設定するピクセルの垂直位置。

iIndex
カラー パレット内の色のインデックス。

CImage::SetPixelRGB

xy で指定した位置のピクセルを、赤、緑、青 (RGB) の画像の rgb で示される色に設定します。

void SetPixelRGB(
    int x,
    int y,
    BYTE r,
    BYTE g,
    BYTE b) throw();

パラメーター

x
設定するピクセルの水平位置。

y
設定するピクセルの垂直位置。

r
赤色の強度。

g
緑色の強度。

b
青色の強度。

解説

赤、緑、青の各パラメーターは、それぞれ 0 から 255 の数値で表されます。 3 つのパラメーターすべてを 0 に設定した場合、結合された結果の色は黒になります。 3 つのパラメーターすべてを 255 に設定した場合、結合された結果の色は白になります。

CImage::SetTransparentColor

インデックスで指定した特定の位置の色を透明として設定します。

LONG SetTransparentColor(LONG iTransparentColor) throw();

パラメーター

iTransparentColor
透明に設定する色のカラー パレット内のインデックス。 -1 の場合、色は透明に設定されます。

戻り値

以前に透明として設定された色のインデックス。

CImage::StretchBlt

ソース デバイス コンテキストからこの現在のデバイス コンテキストにビットマップをコピーします。

BOOL StretchBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    const RECT& rectDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    DWORD dwROP = SRCCOPY) const throw();

パラメーター

hDestDC
ターゲット デバイス コンテキストのハンドル。

xDest
ターゲットの四角形の左上隅の x 座標 (論理単位)。

yDest
ターゲットの四角形の左上隅の y 座標 (論理単位)。

nDestWidth
ターゲットの四角形の幅 (論理単位)。

nDestHeight
ターゲットの四角形の高さ (論理単位)。

dwROP
実行するラスター操作。 ラスター操作コードでは、ソースのビット、ターゲット、ターゲットを作成するためのパターン (現在選択されているブラシで定義されているもの) を組み合わせる方法を正確に定義します。 他のラスター操作コードとその説明の一覧については、Windows SDK の BitBlt に関する記事を参照してください。

rectDest
ターゲットを示す RECT 構造体への参照。

xSrc
ソースの四角形の左上隅の x 座標 (論理単位)。

ySrc
ソースの四角形の左上隅の y 座標 (論理単位)。

nSrcWidth
ソースの四角形の幅 (論理単位)。

nSrcHeight
ソースの四角形の高さ (論理単位)。

rectSrc
ソースを示す RECT 構造体への参照。

戻り値

成功した場合は 0 以外。それ以外の場合は 0。

解説

詳細については、Windows SDK の StretchBlt に関する記事を参照してください。

CImage::TransparentBlt

ソース デバイス コンテキストからこの現在のデバイス コンテキストにビットマップをコピーします。

BOOL TransparentBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    const RECT& rectDest,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    UINT crTransparent = CLR_INVALID) const throw();

パラメーター

hDestDC
ターゲット デバイス コンテキストのハンドル。

xDest
ターゲットの四角形の左上隅の x 座標 (論理単位)。

yDest
ターゲットの四角形の左上隅の y 座標 (論理単位)。

nDestWidth
ターゲットの四角形の幅 (論理単位)。

nDestHeight
ターゲットの四角形の高さ (論理単位)。

crTransparent
透明として扱うソース ビットマップの色。 既定では、画像の透明色として現在設定されている色を使用する必要があることを示す CLR_INVALID

rectDest
ターゲットを示す RECT 構造体への参照。

xSrc
ソースの四角形の左上隅の x 座標 (論理単位)。

ySrc
ソースの四角形の左上隅の y 座標 (論理単位)。

nSrcWidth
ソースの四角形の幅 (論理単位)。

nSrcHeight
ソースの四角形の高さ (論理単位)。

rectSrc
ソースを示す RECT 構造体への参照。

戻り値

成功した場合は TRUE、それ以外の場合は FALSE

解説

TransparentBlt は、ピクセルあたり 4 ビットおよびピクセルあたり 8 ビットのソース ビットマップに対してサポートされます。 ピクセルあたり 32 ビットのビットマップを透明として指定するには、CImage::AlphaBlend を使用します。

// Performs a transparent blit from the source image to the destination
// image using the images' current transparency settings
BOOL TransparentBlt(CImage* pSrcImage, CImage* pDstImage,
       int xDest, int yDest, int nDestWidth, int nDestHeight)
{
    HDC hDstDC = NULL;
    BOOL bResult;

    if(pSrcImage == NULL || pDstImage == NULL)
    {
        // Invalid parameter
        return FALSE;
    }

    // Obtain a DC to the destination image
    hDstDC = pDstImage->GetDC();
    // Perform the blit
    bResult = pSrcImage->TransparentBlt(hDstDC, xDest, yDest, nDestWidth, nDestHeight);

    // Release the destination DC
    pDstImage->ReleaseDC();

    return bResult;
}

関連項目

MMXSwarm のサンプル
SimpleImage のサンプル
デバイスに依存しないビットマップ
CreateDIBSection
ATL COM デスクトップ コンポーネント
デバイスに依存しないビットマップ