区域是对显示器上一个范围的描述,这个范围可以是矩形、多边形和椭圆的组合。区域可以用来绘制和裁剪,通过将区域选进设备描述表,就可以用区域来进行裁剪(就是说,将可以绘图的范围限制为客户区的一部分)。与画笔、画刷和位图一样,区域是GDI对象,我们应该调用SelectObje将其选入设备描述表,调用DeleObj来删除所创建的区域。
当我们创建一个区域时,Windows返回一个该区域的句柄,类型为HRGN,最简单的区域是矩形,有2种创建矩形区域的方法:
hRgn = CreateRectRgn(xLeft, yTop, xRight, yBottom);
或者:
hRgn = CreateRectRgnIndirect(&rect);
创建椭圆、多边形、圆角矩形的函数就不一一列举了,可能有人会产生疑问,区域有什么特别之处呢?下面这个函数清楚的说明了问题。
iRgnType = CombineRgn(hDestRgn, hSrcRgn1, hSrcRgn2, iCombine);
这一函数将2个源区域组合起来并且用句柄hDestRgn指向组合成的目标区域。这三个区域句柄都必须是有效的,但是hDestRgn所指向的原来的区域将被破坏掉。iCombine参数说明了2个源区域的组合方式。
这个函数的返回值是下列值之一,NULLREGION表示得到一个空区域,SINPLEREGION表示得到简单矩形、椭圆或者多边形。COMPLEXREGION表示得到简单图形的组合,ERROR表示出错了。