CRgn::CombineRgn

通过合并两个现有区域创建新的GDI区域。

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

参数

  • pRgn1
    标识现有区域。

  • pRgn2
    标识现有区域。

  • nCombineMode
    在合并两个源区域时,指定要执行的操作。 它可以是以下任一值:

    • RGN_AND 使用复盖率区域两个区域(型交叉处)。

    • RGN_COPY 创建区域1的副本(由 pRgn1)。

    • RGN_DIFF 创建包含不属于区域2的区域区域1的区域(由 pRgn1) (由 pRgn2)。

    • RGN_OR 全文合并两个区域(联合)。

    • RGN_XOR 合并两个区域,但取消复盖率区域。

返回值

指定得到的区域的类型。 它可以是下列值之一:

  • COMPLEXREGION 新的区域存在重叠的边框。

  • ERROR 不创建的新区域。

  • NULLREGION 新的区域为空。

  • SIMPLEREGION 新的区域不存在重叠的边框。

备注

区域合并为指定的 nCombineMode。

两个指定的区域,合并,得到的区域处理在 CRgn 对象存储。 因此,任何区域在 CRgn 对象存储已为合并的区域替换。

区域的大小限制为内存32,767 x 32,767个逻辑单元或64K,后者较小。

使用 CopyRgn 复制一个绑定到另一个区域。

示例

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRectRgn( 50, 50, 150, 150 ));
VERIFY(rgnB.CreateRectRgn( 100, 100, 200, 200 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush br1, br2, br3;
VERIFY(br1.CreateSolidBrush( RGB(255, 0, 0) ));  // rgnA Red
VERIFY(pDC->FrameRgn( &rgnA, &br1, 2, 2 ));
VERIFY(br2.CreateSolidBrush( RGB(0, 255, 0) ));  // rgnB Green
VERIFY(pDC->FrameRgn( &rgnB, &br2, 2, 2 ));
VERIFY(br3.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &br3, 2, 2 ));

要求

Header: afxwin.h

请参见

参考

CRgn 类

层次结构图

CRgn::CopyRgn

CombineRgn