CRgn::CombineRgn
Tworzy nowy region GDI przez połączenie dwóch istniejących regionów.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode
);
Parametry
pRgn1
Określa istniejący region.pRgn2
Określa istniejący region.nCombineMode
Określa działanie wykonywane podczas łączenia regionów dwa źródła.Mogą to być jeden z następujących wartości:RGN_AND używa nakładające się obszary obu regionów (przecięcie).
RGN_COPY tworzy kopię region 1 (identyfikowane przez pRgn1).
RGN_DIFF tworzy regionu składającą się z obszarów regionu 1 (identyfikowane przez pRgn1) nie są częścią regionu 2 (określone przez pRgn2).
RGN_OR łączy obu regionów w całości (Unia).
RGN_XOR łączy obu regionów, ale usuwa nakładające się obszary.
Wartość zwracana
Określa typ wynikowy regionu.Mogą to być jedna z następujących wartości:
COMPLEXREGION nowy region ma nakładających się obramowanie.
Błąd nie nowy region utworzone.
NULLREGION nowy region jest puste.
SIMPLEREGION nowy region nie ma nakładających się obramowania.
Uwagi
Łączone są regiony określone przez nCombineMode.
Dwa określone regiony są łączone i uchwyt regionu wynikowy jest przechowywany w CRgn obiektu.W ten sposób, niezależnie od regionu są przechowywane w CRgn obiektu zastępuje Scalonej regionu.
Rozmiar regionu jest ograniczona do 32 767 przez 32 767 logiczne jednostki lub 64 K pamięci, jest mniejsze.
Użyj CopyRgn po prostu skopiować jednego regionu do innego regionu.
Przykład
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 ));
Wymagania
Nagłówek: afxwin.h