CRgn::CombineRgn
Cria uma nova região 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 ao combinar as regiões de fonte de dois.Pode ser qualquer um dos seguintes valores:RGN_AND Usa áreas de ambas as regiões (interseção) em sobreposição.
RGN_COPY Cria uma cópia da região 1 (identificadas por pRgn1).
RGN_DIFF Cria uma região consiste em áreas de região (identificadas por 1pRgn1) que não fazem parte da região (identificado pelo 2 pRgn2).
RGN_OR Combina as duas regiões em sua totalidade (união).
RGN_XOR Combina as duas regiões, mas remove áreas sobrepostas.
Valor de retorno
Especifica o tipo da região resultante.Ele pode ser um dos seguintes valores:
COMPLEXREGION Nova região tem sobrepostas bordas.
ERRO Nenhuma nova região criado.
NULLREGION Nova região está vazia.
SIMPLEREGION Nova região tem sem bordas sobrepostas.
Comentários
sistema autônomo regiões são combinadas sistema autônomo especificado por nCombineMode.
Os dois especificado regiões são combinados e o identificador de região resultante é armazenado no CRgn objeto. Portanto, qualquer região é armazenado na CRgn objeto é substituído pela região combinado.
O dimensionar de uma região é limitado a 64 K de memória ou de unidades lógicas de 32.767 a 32.767, o que for menor.
Use CopyRgn simplesmente copiar 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