画笔和画刷都是GDI所定义的图形对象,画笔是线条的样式,画刷则是封闭图形内部填充的样式。可以自定义绘图所用画笔及画刷的样式,系统预设画笔的样式为BLACK_PEN,画刷的样式为NULL_BRUSH。
要自定义画笔或画刷,可以使用下列3个API函数。
HPEN CreatePen(int 样式, int 宽度, COLORREF 颜色); //建立画笔
HBRUSH CreateHatchBrush(int 样式, COLORREF颜色); //建立阴影画刷
HBRUSH CreateSolidBrush(COLORREF 颜色); //建立单色画刷
从上面的3个API函数可以看出,其返回值都是以英文字母“H”开头,“H”在这里代表的就是前面所提过的“handle”(句柄)。
建立新画笔与画刷之后,必须在所要进行绘图的DC中选用它们,才会产生预期的画笔及画刷效果,选用的函数如下:
HGDIOBJ SelectObject(HDC hdc, HGDIBJ GDI对象); //选用GDI对象
这个SelectObject()函数所输入的第二个参数就是GDI对象的handle,而返回值则是前一次所使用的GDI对象。除了这一小节所介绍的画笔,画刷是属于GDI对象外,其他的GDI对象还有:位图、字体、区域及调色板。
GDI对象一经建立便会占用部分内存,一旦不使用的时候,务必将它们删除,删除函数如下:
BOOL DeleteObject(HGDIOBJ GDI对象); //删除GDI对象
若删除对象成功,则会返回布尔值“TRUE”,若失败则返回“FALSE”。
范例ch2_1:建立7种系统所提供的画笔即画刷样式,将结果绘制于窗口中
下载地址:
ch2_1(上传到windows live空间,可能需要MSN账号登陆)
说明:程序源代码中有相关的注释。
最后运行结果图:
PS:如想获得更多关于Visual C++游戏开发的内容,可点击随笔
:《Visual C++游戏编程基础》学习笔记——索引随笔。