共用方式為


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:

範例

// 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

請參閱

參考

CBrush 類別

階層架構圖

CBrush::CreatePatternBrush

CBrush::CreateBrushIndirect

CBrush::CreateSolidBrush

CBrush::CreateHatchBrush

CGdiObject::CreateStockObject

CDC::SelectObject

CGdiObject::DeleteObject

CDC::GetBrushOrg

CDC::SetBrushOrg