矩形和区域
Windows 包含了几种使用 RECT(矩形)结构和 RGN 区域的绘图函数。区域就是屏幕上的一块地方,它是矩形、多边形和椭圆的组合。
下面 3 个绘图函数需要一个指向矩形结构的指针:
在这些函数中,rect 参数是一个 RECT 形态的结构,它包含有 4 个字段:left、top、right 和 bottom。这个结构中的坐标被当作逻辑坐标。
FillRect 用指定画刷来填入矩形,该函数不需要先将画刷选进设备内容。
FrameRect 使用画刷画矩形框,但是不填入矩形。使用画刷画矩形看起来有点奇怪,因为对于所介绍过的函数(如 Rectangle),其边线都是用目前画笔绘制的。FrameRect 允许使用者画一个不一定为纯色的矩形框。该边界框为一个逻辑单位元宽。如果逻辑单位大于设备单位,则边界框将会为 2 个像素宽或者更宽。
InvertRect 将矩形中所有像素翻转,1 转换成 0,0 转换为 1,该函数将白色区域转变成黑色,黑色区域转变为白色,绿色区域转变成洋红色。
调用 SetRect 函数可以设定矩形区域:
SetRect (&rect, xLeft, yTop, xRight, yBottom) ;
下面8个函数,能搞方便的实现一些基本操作。
将矩形眼X轴和Y轴移动几个单元:
offsetRect (&rect,x,y);
增减矩形的尺寸:
InflateRect(&rect,x,y);
矩形各字段设定为0:
SetRectEmpty(&rect);
将矩形复制给另一个矩形:
CopyRect(&DestRect,&SrcRect);
取得两个矩形的交集:
IntersectRect(&DestRect,&SrcRect1,&SrcRect2);
取得两个矩形的合集:
UnionRect(&DestRect,&SrcRect1,&SrcRect2);
确定矩形是否为空:
bEmpty = IsRectEmpty(&rect);
确定点是否在矩形内:
bInRect = PtInRect(&rect,point);