CRgn::CombineRgn

Cria uma nova região de GDI combinando duas regiões existentes.

int CombineRgn(
   CRgn* pRgn1,
   CRgn* pRgn2,
   int nCombineMode 
);

Parâmetros

  • pRgn1
    Identifica uma região existente.

  • pRgn2
    Identifica uma região existente.

  • nCombineMode
    Especifica a operação a ser executada para combinar as duas regiões de origem.Pode ser qualquer um dos seguintes valores:

    • RGN_AND usa sobrepostos áreas de ambas as regiões (interseção).

    • RGN_COPY cria uma cópia da região 1 (identificada por pRgn1).

    • RGN_DIFF cria uma região que consiste em áreas da região 1 (identificada por pRgn1) que não são parte da região 2 (identificada por pRgn2).

    • RGN_OR combina as duas regiões em sua totalidade (união).

    • RGN_XOR combina as duas regiões mas remove sobrepostos áreas.

Valor de retorno

Especifica o tipo da região resultante.Pode ser um dos seguintes valores:

  • A nova região deCOMPLEXREGION tem sobrepostos bordas.

  • ERRO Nenhuma região novo criada.

  • A nova região deNULLREGION está vazia.

  • A nova região deSIMPLEREGION não tem nenhuma borda sobrepostos.

Comentários

Regiões são combinadas conforme especificado por nCombineMode.

As duas regiões especificadas são combinadas, e tratar resultante na região é armazenada no objeto de CRgn .Assim, o que região é armazenada no objeto de CRgn é substituído pela região combinada.

O tamanho de uma região é limitado a 32.767 por 32.767 unidades lógicas ou a 64K de memória, qualquer é menor.

Use CopyRgn para copiar somente uma região em outra região.

Exemplo

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 ));

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

CRgn Class

Gráfico de hierarquia

CRgn::CopyRgn

CombineRgn