다음을 통해 공유


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

참고 항목

참조

CRgn 클래스

계층 구조 차트

CRgn::CopyRgn

CombineRgn