5、绘图基础( 三 )


HBRUSHWINAPI CreatePatternBrush(HBITMAP hbm);HBRUSHWINAPI CreateDIBPatternBrush(HGLOBAL h, UINT iUsage);
HBRUSHWINAPI CreateBrushIndirect(CONST LOGBRUSH *plbrush);/* Logical Brush (or Pattern) */typedef struct tagLOGBRUSH{UINTlbStyle;COLORREFlbColor;ULONG_PTRlbHatch;} LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
属性定义了另外两个属性的意义:
h
画刷颜色
忽略
(空画刷)
忽略
忽略
阴影线颜色
阴影线样式
忽略
位图句柄
忽略
指向DIB的指针
类似画笔,可以利用从画刷句柄中读取画刷信息到逻辑画刷中:
GetObject(hBrush, sizeof(LOGBRUSH), (LPVOID)&logbrush);
映射模式 矩形、区域和裁剪 1、处理矩形
除了,还提供了一些其它处理矩形的函数:
2、区域
区域是一种GDI对象,是对一块空间的描述,可以是任意形状 。
将区域选进设备环境,是对设备环境绘图空间的一种裁剪,就会把绘图限制在区域指定的空间内,在区域外的绘图动作会被忽略 。
HRGNWINAPI CreateRectRgn(int x1, int y1, int x2, int y2);HRGNWINAPI CreateRectRgnIndirect(CONST RECT *lprect);
HRGNWINAPI CreateRoundRectRgn(int x1, int y1, int x2, int y2, int w, int h);
HRGNWINAPI CreateEllipticRgn(int x1, int y1, int x2, int y2);HRGNWINAPI CreateEllipticRgnIndirect(CONST RECT *lprect);
HRGNWINAPI CreatePolygonRgn(CONST POINT *pptl, int cPoint, int iMode);HRGNWINAPI CreatePolyPolygonRgn(CONST POINT *pptl, CONST INT*pc, int cPoly,int iMode);
intWINAPI CombineRgn(HRGN hrgnDst, HRGN hrgnSrc1, HRGN hrgnSrc2, int iMode);// iMode区域合并方式#define RGN_AND1#define RGN_OR2#define RGN_XOR3#define RGN_DIFF4// hrgnSrc1不在hrgnSrc2的部分#define RGN_COPY5// hrgnSrc1全部// 返回值#define ERROR0// 错误#define NULLREGION1// 空区域#define SIMPLEREGION2// 矩形、椭圆或多边形简单区域#define COMPLEXREGION3// 矩形、椭圆或多边形组合区域
类似矩形,也提供了一些处理区域的函数
3、裁剪
除了把区域选入设备环境外,还可以调用使一个区域无效,从而在处理消息时把绘制动作限制在特定区域内 。相对的,可以使一个区域有效 。