CBrush::CreateDIBPatternBrush

初始化一个设备无关位图(dib)所指定的模式的画笔(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像素。 如果位图更大,Windows创建填充模式仅使用位与前8行、像素相对应的8列在位图的左上角。

当应用程序选择一个两种颜色的DIB模式画笔到纯色设备上下文时,使用设备上下文,中的当前文本和背景色Windows忽略在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 Class

层次结构图

CBrush::CreatePatternBrush

CBrush::CreateBrushIndirect

CBrush::CreateSolidBrush

CBrush::CreateHatchBrush

CGdiObject::CreateStockObject

CDC::SelectObject

CGdiObject::DeleteObject

CDC::GetBrushOrg

CDC::SetBrushOrg