画笔与画刷

画笔与画刷

      画笔和画刷都是GDI所定义的图形对象,画笔是线条的样式,画刷则是封闭图形内部填充的样式。可以自定义绘图所用画笔及画刷的样式,系统预设画笔的样式为BLACK_PEN,画刷的样式为NULL_BRUSH

      要自定义画笔或画刷,可以使用下列3API函数。

HPEN CreatePen( int  样式,  int  宽度, COLORREF 颜色);  // 建立画笔
HBRUSH CreateHatchBrush( int  样式, COLORREF颜色);    // 建立阴影画刷
HBRUSH CreateSolidBrush(COLORREF 颜色);    // 建立单色画刷

      从上面的3API函数可以看出,其返回值都是以英文字母“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++游戏编程基础》学习笔记——索引随笔。

你可能感兴趣的:(画笔与画刷)