初始化一个设备无关位图(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:
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