关于CRgn类

CRgn类是CGdiObject的一个派生类

一)关于CRgn对象创建

ps:CRgn类的构造函数只有一个,定义一个CRgn对象后,必须调用初始化函数进行初始化才能使用。

A:初始化矩形区域

BOOL   CreateRectRgn(int x1,int y1,int x2,int y2);

BOOL   CreateRectRgnIndirect(LPCRECT lpRect);

B:初始化椭圆区域

BOOL  CreateEllipticRgn(int x1,int y1,int x2,int y2);

BOOL  CreateEllipticRgnIndirect(LPCRECT lpRect);

C:初始化多边形区域

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

ps:lpPoints指向一个POINT结构或CPoint对象数组;nCount是多边形区域顶点的数目;nMode是多边形的填充模式,可选用参数ALTERNATE或WINDING。

D:初始化一个包含一系列多边形的区域

BOOL  CreatePolyPolygonRgn(LPPOINT lpPoints,LPINT lpPolyCounts,int nCount,int nPolyFillMode);

ps:创建的多边形可独立也可相交。lpPoints指向一个POINT结构数组或CPoin对象数组,数组中的每个结构或对象用来表示一个顶点的坐标。参数lpPolyCounts是一个整数数组,存储的是各个多边形的顶点数。参数nCount表示区域中多边形的数目,即lpPolyCounts数组的项数。参数nPolyFillMode表示填充模式。

eg:     

CRgn  m_Rgn;
POINT point[12];    //定义一个POINT结构数组
...                 //输入坐标数值 
int  nCount[3];
nCount[0] = 3;
nCount[1] = 4;
nCount[2] = 5;     //区域中各个多边形的顶点数目

m_Rgn.CreatePolyPolygonRgn(point,nCount,3,0);         //初始化区域对象

//ps:以上代码初始化一个包含三个多边形的区域,三个多边形的顶点数分别是3、4、5,结构数组point中存放的是顶点坐标,一共12个顶点。

二)关于CRgn对象删除

m_Rgn.DelectObject();    


三)关于CRgn对象常用操作

A:通过已存在的2个对象初始化新的对象

int  CombineRgn(CRgn*  pRgn1,CRgn*  pRgn2, int  nCombineMode);

ps:参数nCombineMode为操作模式。具体如下:

        RGN_AND:         以两个区域的相交部分初始化新区域。   

        RGN_COPY:      初始化一个和第1区域相同的区域。

        RGN_DIFF:         用第1区域中没有与第2个区域相交的部分初始化区域。

        RGN_OR:           初始化一个包含两个区域的区域。

        RGN_XOR:         初始化一个包含两个区域,但不包含两个区域相交部分的区域。

        返回值:

        COMPLEXREGION:    区域覆盖边界。

        ERROR:                        操作无效。

        NULLREGION:            区域为空。

        SIMPLEREGION:        区域没有覆盖边界。

B:用一个存在的区域复制初始化当前的区域

int   CopyRgn(CRgn*  pRgnSrc);

C:判断2个区域是否相同

BOOL   EqualRgn(CRgn* pRgn);

D:移动区域

int   OffsetRgn(int x,int y);              //x,y代表横向及纵向移动量

int   OffsetRgn(POINT point);       //返回值含义同CombineRgn

E:获取区域边界矩形

int   GetRgnBox(LPRECT  lpRect);

F:判断一个点是否在区域中

BOOL  PtInRegion(int x,int y);

BOOL PtInRegion(POINT point);

G:判断一个区域是否在区域中

BOOL  RectInRegion(LPCRECT lpRect);


四)关于CRgn对象的引用

A:使区域无效并重绘

InvalidateRgn(&m_Rgn);






  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值