CBrush::CreateDIBPatternBrush
デバイスに依存しないビットマップ (DIB) によって指定されるパターンで、ブラシを初期化します。
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage
);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage
);
パラメーター
hPackedDIB
パックされたデバイスに依存しないビットマップ (DIB) を格納するグローバル メモリ オブジェクトを識別します。nUsage
BITMAPINFO のデータ構造体 (」パーツ「パックされた DIB 満たされている現在の論理パレットに) の bmiColors[] のフィールドを明示的な RGB 値またはインデックスが含まれているかどうかを指定します。パラメーターの値は、次の 1 種類があります:DIB_PAL_COLORS は、16 ビットの色テーブル インデックスの配列から構成されます。
DIB_RGB_COLORS を色テーブル文字の RGB 値を含みます。
lpPackedDIB
BITMAPINFO から構成される、パックされた DIB へのポインターはビットマップのピクセルを定義するバイト配列によって、その後に構成します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
ブラシは任意のデバイス コンテキストにサポートするラスター オペレーション従って選択できます。
2 種類のバージョンは、DIB の処理方法が異なります:
最初の形式では、DIB にハンドルを取得するには、グローバル メモリのブロックを割り当て、次に構成される、パックされた DIB のメモリを塗りつぶすために GlobalAlloc Windows の関数を呼び出します。
2 番目のバージョンでは、パックされた DIB のメモリを割り当てるに GlobalAlloc を呼び出す必要はありません。
DIB は、パックされたビットマップのピクセルを定義するバイト配列に続く BITMAPINFO のデータ構造から構成されます。塗りつぶしパターンとして使用されるビットマップは 8 ピクセルによって 8 ピクセル必要があります。ビットマップがよりも大きい場合は、Windows は最初の 8 行に対応するビットマップの左上隅のピクセルのビットおよび 8 列だけを使用して塗りつぶしパターンを作成します。
アプリケーションがモノクロ デバイス コンテキストに 2 色の DIB パターンのブラシを選択すると、Windows は DIB で指定された色が無視され、デバイス コンテキストの現在のテキストと背景色を使用してのパターンのブラシを表示します。DIB の最初の色 (DIB のカラー テーブルのオフセット 0 にマップされるピクセル) はテキストの色を使用して表示されます。2 番目の色にマップされるピクセルの背景色を使用してカラー テーブルのオフセット (1) で表示されます。
次の Windows 関数の使用については、Windows SDKを参照:
CreateDIBPatternBrush (この関数は、前に記述された Windows のバージョンのアプリケーションとの互換性のためだけに与えられますより 3.0; CreateDIBPatternBrushPt 関数を使用します。)
CreateDIBPatternBrushPt (この関数は WIN32 ベースのアプリケーションに使用してください。
使用例
// Resource handle to bitmap.
HRSRC hRes;
// Global handles to bitmap resource.
HGLOBAL hData;
void* hLockedData;
CBrush brush;
// Find the resource handle.
hRes = ::FindResource(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDB_BRUSH), RT_BITMAP);
if (hRes != NULL)
{
// Lock and Load (or Load and Lock).
if (((hData = ::LoadResource(AfxGetResourceHandle(),
hRes)) != NULL) &&
((hLockedData = ::LockResource(hData)) != NULL))
{
// Initialize the brush.
brush.CreateDIBPatternBrush((const void*)hLockedData,
DIB_RGB_COLORS);
// Select the brush into the device context.
CBrush* pOldBrush = pDC->SelectObject(&brush);
// Draw.
pDC->Rectangle(50, 50, 200, 200);
// Restore the original device context.
pDC->SelectObject(pOldBrush);
// Free the resource.
::FreeResource(hLockedData);
}
}
必要条件
ヘッダー: afxwin.h