#define PICWIDTH 365
#define PICHEIGHT 160
//CRgn Test;
//X1,Y1 ---------- Long,矩形左上角X,Y坐标
//X2,Y2 ---------- Long,矩形右下角X,Y坐标
//创建一个矩形区域
HRGN rgnRect1=CreateRectRgn(0,0,100,PICHEIGHT);
HRGN rgnRect2=CreateRectRgn(110,0,210,PICHEIGHT);
/*
创建的一个带圆角的矩形区域。
nLeftRect
[in] 指定了x坐标的左上角区域逻辑单位。
nTopRect
[in] 指定了y坐标的左上角区域逻辑单位。
nRightRect
[in] 指定了x坐标的右下角区域逻辑单位。
nBottomRect
[in] 指定了y坐标的右下角区域逻辑单位。
nWidthEllipse
[in] 指定创建圆角的宽度逻辑单位。
nHeightEllipse
[in] 指定创建圆角的高度逻辑单位。
*/
HRGN rgnRoundRect=CreateRoundRectRgn(0,0,PICWIDTH,PICHEIGHT,10,10);
//创建一个椭圆区域
HRGN rgnEllipticRect=CreateEllipticRgn(0,0,PICWIDTH,PICHEIGHT);
//创建一个由一系列点围成的区域
#define BIANKUANG 10
CPoint pts[8] = {CPoint(BIANKUANG, 0), CPoint(PICWIDTH-BIANKUANG, 0), CPoint(PICWIDTH, BIANKUANG), CPoint(PICWIDTH, 150),
CPoint(PICWIDTH-BIANKUANG, PICHEIGHT), CPoint(BIANKUANG, PICHEIGHT), CPoint(0, PICHEIGHT-BIANKUANG), CPoint(0,BIANKUANG)};
HRGN rgnPolygonRect=CreatePolygonRgn(pts,_countof(pts),ALTERNATE);
/*
RGN_AND 两个源区域的交集(集合中的交集)
RGN_COPY 设置为hSrcRgn1的拷贝
RGN_DIFF 设置为hSrcRgn1与hSrcRgn2相减后的区域(集合中的差集)
RGN_OR 被设置为两个区域的并集(集合中的并集)
RGN_XOR 被设置为两个区域的异或操作后的区域(集合中的异或操作)
*/
HRGN RgnTwo=CreateRectRgn(0,0,0,0);//必须先创建一个空的区域
//两个区域转变成一个区域
CombineRgn(RgnTwo,rgnRect1,rgnRect2,RGN_OR);
//区域生效
SetWindowRgn(rgnPolygonRect,true);
//不用时一定要用DeleteObject函数删除该区域
DeleteObject(rgnRoundRect);
#define PICHEIGHT 160
//CRgn Test;
//X1,Y1 ---------- Long,矩形左上角X,Y坐标
//X2,Y2 ---------- Long,矩形右下角X,Y坐标
//创建一个矩形区域
HRGN rgnRect1=CreateRectRgn(0,0,100,PICHEIGHT);
HRGN rgnRect2=CreateRectRgn(110,0,210,PICHEIGHT);
/*
创建的一个带圆角的矩形区域。
nLeftRect
[in] 指定了x坐标的左上角区域逻辑单位。
nTopRect
[in] 指定了y坐标的左上角区域逻辑单位。
nRightRect
[in] 指定了x坐标的右下角区域逻辑单位。
nBottomRect
[in] 指定了y坐标的右下角区域逻辑单位。
nWidthEllipse
[in] 指定创建圆角的宽度逻辑单位。
nHeightEllipse
[in] 指定创建圆角的高度逻辑单位。
*/
HRGN rgnRoundRect=CreateRoundRectRgn(0,0,PICWIDTH,PICHEIGHT,10,10);
//创建一个椭圆区域
HRGN rgnEllipticRect=CreateEllipticRgn(0,0,PICWIDTH,PICHEIGHT);
//创建一个由一系列点围成的区域
#define BIANKUANG 10
CPoint pts[8] = {CPoint(BIANKUANG, 0), CPoint(PICWIDTH-BIANKUANG, 0), CPoint(PICWIDTH, BIANKUANG), CPoint(PICWIDTH, 150),
CPoint(PICWIDTH-BIANKUANG, PICHEIGHT), CPoint(BIANKUANG, PICHEIGHT), CPoint(0, PICHEIGHT-BIANKUANG), CPoint(0,BIANKUANG)};
HRGN rgnPolygonRect=CreatePolygonRgn(pts,_countof(pts),ALTERNATE);
/*
RGN_AND 两个源区域的交集(集合中的交集)
RGN_COPY 设置为hSrcRgn1的拷贝
RGN_DIFF 设置为hSrcRgn1与hSrcRgn2相减后的区域(集合中的差集)
RGN_OR 被设置为两个区域的并集(集合中的并集)
RGN_XOR 被设置为两个区域的异或操作后的区域(集合中的异或操作)
*/
HRGN RgnTwo=CreateRectRgn(0,0,0,0);//必须先创建一个空的区域
//两个区域转变成一个区域
CombineRgn(RgnTwo,rgnRect1,rgnRect2,RGN_OR);
//区域生效
SetWindowRgn(rgnPolygonRect,true);
//不用时一定要用DeleteObject函数删除该区域
DeleteObject(rgnRoundRect);