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