CBrush::CreateDIBPatternBrush
初始化一個與裝置無關的點陣圖所指定模式的筆刷 (DIB)。
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage
);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage
);
參數
hPackedDIB
識別包含一個封裝的與裝置無關的點陣圖 (DIB) 的全域記憶體中的物件。nUsage
指定 BITMAPINFO 資料結構 (「封裝的 DIB 的」一節中 bmiColors[] 欄位) 是否包含明確的 RGB 值或索引目前實現的邏輯調色盤。參數必須是下列其中一個值:DIB_PAL_COLORS 色表包含一些 16 位元索引。
DIB_RGB_COLORS 色表包含常值 RGB 值。
lpPackedDIB
為包含 BITMAPINFO 封裝的 DIB 的點結構後面緊接著定義點陣圖的像素的位元組陣列。
傳回值
如果不是零,則成功,則為 0。
備註
筆刷可以支援光柵作業的所有裝置內容會接著被選取。
兩個版本不同方式與您所管理的 DIB:
在第一個版本,控點對於 DIB 您呼叫 Windows 函式 GlobalAlloc 配置全域記憶體區塊是封裝的 DIB 然後填滿記憶體。
在第二個版本,呼叫 GlobalAlloc 配置封裝的 DIB 的記憶體不是必要的。
封裝的 DIB 包含定義點陣圖的像素陣列 (後面緊接著的 BITMAPINFO 資料結構位元組。當使用填滿圖樣的點陣圖必須是 8 x 8 像素。如果點陣圖大於,建立視窗填滿圖樣只使用欄位與前 8 列和像素對應的 8 個資料行以點陣圖的左上角。
當應用程式選擇一個雙色 DIB 圖樣筆刷輸入單色裝置內容時,會使用裝置內容中目前的文字和背景色彩,視窗會忽略在指定 DIB 的色彩和顯示圖樣筆刷。像素對應至第一個色彩 (於位移 0 DIB 的色彩表中) 使用的文字色彩, DIB 顯示。像素對應至第二個色彩 (於位移 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);
}
}
需求
Header: afxwin.h