下面三个绘图函式需要一个指向矩形结构的指标:
FillRect (hdc, &rect, hBrush) ;
FrameRect (hdc, &rect, hBrush) ;
InvertRect (hdc, &rect) ;
在这些函式中,rect参数是一个RECT型态的结构,它包含有4个栏位:left、top、right和bottom。这个结构中的坐标被当作逻辑坐标。
FillRect用指定画刷来填入矩形(直到但不包含right和bottom坐标),该函式不需要先将画刷选进装置内容。
FrameRect使用画刷画矩形框,但是不填入矩形。使用画刷画矩形看起来有点奇怪,因为对於我们所介绍过的函式(如Rectangle),其边线都是用目前画笔绘制的。FrameRect允许使用者画一个不一定为纯色的矩形框。该边界框为一个逻辑单位元宽。如果逻辑单位大于装置单位,则边界框将会为2个图素宽或者更宽。
InvertRect将矩形中所有图素翻转,1转换成0,0转换为1,该函式将白色区域转变成黑色,黑色区域转变为白色,绿色区域转变成洋红色。
Windows还提供了9个函式,使您可以更容易、更清楚地操作RECT结构。例如,要将RECT结构的四个栏位设定为特定值,通常使用如下的程式段:
rect.left = xLeft ;
rect.top = xTop ;
rect.right = xRight ;
rect.bottom = xBottom ;
但是,通过呼叫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) ;
大多数情况下,与这些函式相同作用的程式码很简单。例如,您可以用下列叙述来替代CopyRect函式呼叫:
DestRect = SrcRect ;