windows程序设计之创建画刷
来源:互联网 发布:淘宝怎么买万艾可 编辑:程序博客网 时间:2024/05/22 11:45
第一种: hbr= CreateSolidBrush(RGB(255,0,0)); //创建单色的画刷
第二种: hbr= (HBRUSH)GetStockObject(BLACK_BRUSH); //只能取特定颜色的画刷,如BLACK_BRUSH,GRAY_BRUSH刷
第三种: hbr= CreatePatternBrush(HBITMAP hbmp); //位图画刷
第四种: hbr = CreateHatchBrush(int fnStyle,COLORREF clrref ) //创建一种带阴影的画刷
第五种: hbr= CreateBrushIndirect(LOGBRUSH); //通过LOGBRUSH结构体来取画刷
typedef struct tagLOGBRUSH {
UINT lbStyle; //画刷类型
COLORREF lbColor; //颜色
LONG lbHatch; //阴影
} LOGBRUSH, *PLOGBRUSH;
第六种: hbr= HBRUSH CreateDIBPatternBrush( //通过与设备无关位图创建一个画刷
HGLOBAL hglbDIBPacked, // handle to DIB
UINT fuColorSpec // color table data
);
Windows还有五个函数,可以让您建立逻辑画刷,然后就可使用SelectObject将画刷选进设备内容。与逻辑画笔一样,逻辑画刷也是GDI对象。您建立的所有画刷都必须被删除,但是当它还在设备内容中时不能将其删除。
下面是建立逻辑画刷的第一个函数:
hBrush = CreateSolidBrush (crColor) ;
函数中的Solid并不是指画刷为纯色。在将画刷选入设备内容中时,Windows建立一个混色色的位图,并为画刷使用该位图。
您还可以使用由水平、垂直或者倾斜的线组成的「影线标记(hatch marks)」来建立画刷,这种风格的画刷对着色条形图的内部和在绘图机上进行绘图最有用。建立影线画刷的函数为:
hBrush = CreateHatchBrush (iHatchStyle, crColor) ;
iHatchStyle参数描述影线标记的外观。图5-18显示了六种可用的影线标记风格
CreateHatchBrush中的crColor参数是影线的色彩。在将画刷选进设备内容时,Windows将这种色彩转换为与之最相近的纯色。影线之间的区域根据设备内容中定义的背景方式和背景色来着色。如果背景方式为OPAQUE,则用背景色(它也被转换为纯色)来填入线之间的空间。在这种情况下,影线和填入色都不能是混色而成的颜色。如果背景方式为TRANSPARENT,则Windows只画出影线,不填入它们之间的区域。
您也可以使用CreatePatternBrush和CreateDIBPatternBrushPt建立自己的位图画刷。
建立逻辑画刷的第五个函数包含其它四个函数:
hBrush = CreateBrushIndirect (&logbrush) ;
变量logbrush是一个型态为LOGBRUSH(「逻辑画刷」)的结构,该结构的三个字段如表5-4所示,lbStyle字段的值确定了Windows如何解释其它两个字段的值:
lbStyle (UINT)
lbColor (COLORREF)
lbHatch (LONG)
BS_SOLID
画刷的色彩
忽略
BS_HOLLOW
忽略
忽略
BS_HATCHED
影线的色彩
影线画刷风格
BS_PATTERN
忽略
位图的句柄
BS_DIBPATTERNPT
忽略
指向DIB的指标
用SelectObject将逻辑画笔选进设备内容,用DeleteObject删除画笔,用GetObject来取得逻辑画笔的信息。对于画刷,同样能使用这三个函数。
用SelectObject将该画刷选进设备内容:
SelectObject (hdc, hBrush) ;
用DeleteObject函数删除所建立的画刷:
DeleteObject (hBrush) ;
但是,不要删除目前选进设备内容的画刷。
呼叫GetObject取得画刷信息:
GetObject (hBrush, sizeof (LOGBRUSH), (LPVOID) &logbrush) ;
- windows程序设计之创建画刷
- Windows程序设计之创建Windows应用窗体
- windows程序设计 创建窗口
- 多线程程序设计之创建线程(Windows下C++实现)
- WINDOWS程序设计示例:创建视窗
- Windows程序设计之计时器
- Windows程序设计之对话框
- 《Windows程序设计》之键盘
- 《Windows程序设计》之鼠标
- 《Windows程序设计》之BLOKOUT1
- 《Windows程序设计》之BLOKOUT2
- 《Windows程序设计》之WHATCLR
- 《Windows程序设计》之按钮
- 《Windows程序设计》之图标
- 《Windows程序设计》之菜单
- 《Windows程序设计》之POPUP2
- 《Windows程序设计》之对话框
- 《Windows程序设计》之HEXCALC
- hadoop1.1.2集群动态添加datanode节点
- #pragma pack(1) 的意义是什么
- ASP.NET动态网站开发培训-35.互动论坛制作(三、完善主题列表页面)
- Boost智能指针——weak_ptr
- 无法打开网站 web服务器上似乎未安装frontpage服务器扩展
- windows程序设计之创建画刷
- 在windows上安装Python的各种包
- ibatIS各种数据库的自增长配置
- 手机上WAP和NET连接的区别
- iOS: 在代码中使用Autolayout (2) – intrinsicContentSize和Content Hugging Priority
- 关于利用异或操作来交换两个数值的方法
- C++内存泄漏查找分析
- iOS 程序启动过程
- 实现MFC六大机制的动态创建和序列化