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