怎么把两个不同的rgn区域合并在一起?
比方一个椭圆和一个矩形,谢谢CPaintDC dc(this);
dc.SelectStockObject(NULL_PEN);
CRect rect;
GetClientRect(rect);
CRgn rgn1;
CRgn rgn2;
CRgn *rgn3=NULL;
rgn1.CreateEllipticRgnIndirect(rect);
rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
CombineRgn(*rgn3,rgn1,rgn2,RGN_OR); CBrush newpbrush;
CBrush *oldpbrush;
newpbrush.CreateSolidBrush(RGB(0,0,0));
dc.FillRgn(rgn3,&newpbrush);
SetWindowRgn((HRGN)rgn3,TRUE);
oldpbrush=dc.SelectObject(&newpbrush);
delete rgn3;
为什么就是得不到要合并的区域?

解决方案 »

  1.   

    用GDI+的Region类能够搞定,不只是合并其他的什么都可以,你可以下载SDK看相关的文档
      

  2.   

    我之前做过任意两个多边形相交就是用GDI+搞定的,
    http://expert.csdn.net/Expert/topic/1846/1846493.xml?temp=8.666629E-02
      

  3.   

    不好意思,那样可能链不过去
    http://expert.csdn.net/Expert/TopicView1.asp?id=1846493
      

  4.   

    CRgn rgn1;
    CRgn rgn2;
    CRgn *rgn3=NULL;
    rgn1.CreateEllipticRgnIndirect(rect);
    rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
    CombineRgn(*rgn3,rgn1,rgn2,RGN_OR);
    你的代码有错误应该是
    CRgn rgn1;
    CRgn rgn2;
    CRgn rgn3;
    rgn1.CreateEllipticRgnIndirect(rect);
    rgn2.CreateRectRgn(0,0,rect.right,rect.bottom/2);
    rgn3.CombineRgn(rgn1,rgn2,RGN_OR);