共用方式為


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 新地區有重疊的框線。

  • 錯誤 不會建立新的本機。

  • 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