七巧板是我国民间流传的一种拼图游戏,制作简单但变化多端,具有很高的益智价值。七巧板制作非常简单,使用一张正方形的厚纸板按图13-6所示图样裁开即可。本程序在计算机上模拟使用七巧板进行拼图。
CRgn类用来表示一个区域,其形状不限于矩形。
CRgn类有许多成员函数,其中较重要的有:
1.建立区域:
BOOL CreateRectRgn( int x1, int y1, int x2, int y2 );
BOOL CreateRectRgnIndirect( LPCRECT lpRect );
BOOL CreateEllipticRgn( int x1, int y1, int x2, int y2 );
BOOL CreateEllipticRgnIndirect( LPCRECT lpRect );
BOOL CreatePolygonRgn( LPPOINT lpPoints, int nCount, int nMode );
这几个成员函数分别用于建立矩形、椭圆和多边形区域。对于矩形和椭圆区域要求给出矩形(或椭圆的包含矩形)的参数;对多边形区域,除要求给出多边形的各顶点坐标和顶点个数外,还应说明多边形区域的填充方式。参数nMode可选ALTERNATE 或 WINDING值。如果建立区域成功,返回非零值,否则返回零。
2.取区域的包含矩形
int GetRgnBox ( LPRECT lpRect ) const;
3.移动区域
int OffsetRgn( int x, int y );
int OffsetRgn( POINT point );
该函数可移动一个区域,参数x,y或point为偏移量。
4.测试给定坐标点是否在区域中
BOOL PtInRegion( int x, int y ) const;
BOOL PtInRegion( POINT point ) const;
该函数用来测试一给定坐标点是否在区域中。若在,则返回非零值,否则返回零。
5.测试给定矩形是否在区域中
BOOL RectInRegion( LPCRECT lpRect ) const;
程序: