VC窗口形状的绘制---SetWindowRgn

#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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值