CRgn::CombineRgn
두 개의 기존 영역을 조합 하 여 새로운 GDI 영역을 만듭니다.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode
);
매개 변수
pRgn1
기존 영역을 식별합니다.pRgn2
기존 영역을 식별합니다.nCombineMode
두 소스 영역을 결합할 때 수행 될 작업을 지정 합니다. 이 다음 값 중 하나가 될 수 있습니다.RGN_AND 겹치는 부분 (교집합) 두 영역을 사용 합니다.
RGN_COPY 1 영역의 복사본을 만듭니다 (로 pRgn1).
RGN_DIFF 1 영역의 영역 이루어진 영역을 만듭니다 (로 pRgn1)는 포함 되지 않습니다 영역 2 (로 pRgn2).
RGN_OR (연합) 전체가 두 영역을 결합 합니다.
RGN_XOR 두 영역을 결합 하지만 겹치는 영역을 제거 합니다.
반환 값
결과 영역 유형을 지정합니다. 다음 값 중 하나가 될 수 있습니다.
COMPLEXREGION 새 지역이 겹치는 테두리.
오류 새 영역이 생성 됩니다.
NULLREGION 새 영역이 비어 있습니다.
SIMPLEREGION 새 영역에 겹치는 테두리가 있습니다.
설명
결합 영역에 지정 된 대로 nCombineMode.
두 영역을 결합 하 고 결과 영역 핸들 저장 지정 된 CRgn 개체입니다. 따라서 모든 영역에 저장 되는 CRgn 개체는 결합 된 영역으로 바뀝니다.
크기의 영역에서 32767 32767 논리 단위 또는 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 ));
요구 사항
헤더: afxwin.h