小甲鱼 发表于 2014-11-6 12:54:59

LOGBRUSH 结构

LOGBRUSH 结构

LOGBRUSH 结构定义了逻辑画刷的样式,颜色和图案。

CreateBrushIndirect 函数和 ExtCreatePen 函数需要使用到该结构。


结构原型:

typedef struct tagLOGBRUSH {
UINT      lbStyle;
COLORREFlbColor;
ULONG_PTR lbHatch;
} LOGBRUSH, *PLOGBRUSH;

成员解析:


成员 含义
lbStyle指定画刷的样式,该成员决定着 Windows 如何解释另外的两个成员:

值 含义
BS_DIBPATTERN 1. 带图案的刷子,由设备无关位图(DIB)来定义
2. lbHatch 成员应该是 DIB 的句柄
BS_DIBPATTERN8X8 同 BS_DIBPATTERN
BS_DIBPATTERNPT 1. 带图案的刷子,由设备无关位图(DIB)来定义
2. lbHatch 成员应该是指向 DIB 的指针
BS_HATCHED 阴影画刷
BS_HOLLOW 空画刷
BS_NULL 同 BS_HOLLOW
BS_PATTERN 由内存位图定义的画刷
BS_PATTERN8X8 同 BS_PATTERN
BS_SOLID 实心画刷

lbColor 1. 指定画刷的颜色
2. 如果 lbStyle 成员的值是 BS_HOLLOW 或 BS_PATTERN,该值被忽略
3. 如果 lbStyle 成员的值是 BS_DIBPATTERN 或 BS_DIBPATTERNPT,该值的低 8 位指定 BITMAPINFO 结构中的 bmiColors 成员,包含明确的 RGB 值或当前调色板的索引值:

值 含义
DIB_PAL_COLORS 包含了当前使用的逻辑调色板中的 16 位索引数组的颜色表
DIB_RGB_COLORS 包含了明确的 RGB 值的颜色表
4. 如果 lbStyle 成员的值是 BS_HATCHED 或 BS_SOLID,该值是一个 COLORREF 类型的颜色值(使用 RGB 宏创建 COLORREF 类型)
lbHatch 1. 指定画刷的阴影样式
2. 如果 lbStyle 成员的值是 BS_DIBPATTERN,该值是一个 DIB 的句柄。为了获得这个句柄,应用程序需要调用 GlobalAlloc 函数(GMEM_MOVEABLE 标志)或调用 LocalAlloc 函数(LMEM_MOVEABLE 标志)分配内存块,然后填充 DIB。
3. 如果 lbStyle 成员的值是 BS_DIBPATTERNPT,该值是一个指向 DIB 的指针。该指针指向通过调用 LocalAlloc 函数(LMEM_FIXED 标志)或 GlobalAlloc 函数(GMEM_FIXED 标志)创建的内存块,或通过调用 LocalLock (handle_to_the_dib) 函数返回。
4. 如果 lbStyle 成员的值是 BS_HATCHED,该值指定阴影的样式:

值 含义
HS_BDIAGONAL 45 度向上,从左至右的阴影
HS_CROSS 水平和垂直交叉阴影
HS_DIAGCROSS 45 度交叉阴影
HS_FDIAGONAL 45 度向下,自左至右阴影
HS_HORIZONTAL 水平阴影
HS_VERTICAL 垂直阴影
5. 如果 lbStyle 成员的值是 BS_PATTERN,该值是一个定义图案位图的句柄(该位图不能是 CreateDIBSection 函数创建的 DIB 位图)
6. 如果 lbStyle 成员的值是 BS_SOLID 或 BS_HOLLOW,该值被忽略


备注:

1. DIB(设备无关位图文件格式)包含 BITMAPINFO 结构以及紧跟着的存储像素阵列的数组。

2. 尽管 lbColor 成员指定了阴影画刷的前景色,但调用 SetBkMode 函数和 SetBkColor 函数可以控制背景颜色。

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

WinSDK

RockyRocky 发表于 2015-1-27 16:07:16

小甲鱼 继续更啊!我们都在等着看呢

Mr.Evil 发表于 2015-3-6 11:02:54

学习了

scf 发表于 2015-8-15 09:54:13

小甲鱼,后面的课程什么时候更啊
页: [1]
查看完整版本: LOGBRUSH 结构