CRgn::CreatePolygonRgn

BOOL CreatePolygonRgn( LPPOINT lpPoints, int nCount, int nMode );

返回值:如果操作成功则返回非零值;否则返回0。

参数:
lpPoints指向一个POINT结构数组,或指向一个CPoint对象数组。每一个结构指定多边形的一个顶点的x坐标和y坐标。
POINT结构具有下面这样的形式:
typedef struct tagPOINT
{
  int x;
  int y;
} POINT;

nCount指定由lpPoints指向的数组中的POINT结构或CPoint对象的数目。
nMode指定区域的填充模式。这个参数可以是ALTERNATE或WINDING。

说明:
此成员函数创建一个多边形区域。如果必要,系统通过从多边形的最后一个顶点到第一个顶点绘制一条直线来关闭此多边形。创建出的多边形区域被保存在CRgn对象中。区域的大小被限制在32767×32767个逻辑单位和64K内存这两个值中较小的那个值的范围内。
当多边形的填充模式是ALTERNATE时,系统在每条扫描线上填充第奇数条边与第偶数条边之间的区域。也就是说,系统将填充第1条边和第2条边之间的区域;第3条边和第4条边之间的区域,等等。
当多边形的填充模式时WINDING时,系统使用绘图的方向来决定是否填充一个区域。多边形中的线段不是以顺时针方向就是以逆时针方向绘制的。一旦从一个封闭区域内向一个图形之外画的假想线穿过了一条顺时针线段时,便将某一计数值加1;若这条线穿过了一条逆时针线段,则将计数值减1。当假想线到达图形之外时,若计数值为非零,则区域被填充。
当使用完了由CreatePolygonRgn函数创建的区域时,应用程序应该将此区域选择出设备环境外,并用DeleteObject函数来删除它。

请参阅:CRgn::CreatePolyPolygonRgn, ::CreatePolygonRgn