矩形和区域

Windows 包含了几种使用 RECT(矩形)结构和 RGN 区域的绘图函数。区域就是屏幕上的一块地方,它是矩形、多边形和椭圆的组合。

下面 3 个绘图函数需要一个指向矩形结构的指针:

在这些函数中,rect 参数是一个 RECT 形态的结构,它包含有 4 个字段:lefttopright 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);