CRgn::CombineRgn
Vytvoří novou oblast GDI kombinací dvou existujících oblastí.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode
);
Parametry
pRgn1
Určuje existující oblasti.pRgn2
Určuje existující oblasti.nCombineMode
Určuje operace, které mají být provedeny při kombinování dva zdrojové oblasti.Může být některá z následujících hodnot:RGN_AND používá překrývající se oblasti obou regionů (průsečík).
RGN_COPY vytvoří kopii oblast 1 (podle pRgn1 ).
RGN_DIFF vytvoří oblast sestávající z oblasti oblast 1 (označeny pRgn1 ) nejsou součástí regionu 2 (podle pRgn2 ).
RGN_OR kombinuje oba regiony jako celek (unie).
RGN_XOR kombinuje oba regiony, ale odebere překrývajících se oblastí.
Vrácená hodnota
Určuje typ výsledné regionu.Může být jedna z následujících hodnot:
COMPLEXREGION novou oblast má překrývající se okraje.
Chyba žádné nové oblasti vytvořen.
NULLREGION novou oblast je prázdná.
SIMPLEREGION novou oblast nemá překrývající se okraje.
Poznámky
Regiony jsou kombinovány podle nCombineMode .
Dva zadané oblasti jsou kombinovány a výsledné popisovač oblasti je uložena v CRgn objektu.Proto jakékoli oblasti uložena v CRgn objektu nahrazuje kombinované regionu.
Velikost oblasti je omezena na 32 767 ve 32 767 logické jednotky nebo 64 kB paměti, podle toho, co je menší.
Použití CopyRgn jednoho regionu jednoduše zkopírovat do jiné oblasti.
Příklad
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 ));
Požadavky
Záhlaví: afxwin.h