CRgn::CombineRgn
Crea una nueva área de GDI combinando dos regiones existentes.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode
);
Parámetros
pRgn1
identifica una región existente.pRgn2
identifica una región existente.nCombineMode
Especifica la operación que se realizará al combinar las dos regiones de origen.Puede ser de los siguientes valores:Aplicaciones deRGN_AND que se superponen a áreas de ambas regiones (intersección).
RGN_COPY crea una copia de la región 1 (identificada por pRgn1).
RGN_DIFF crea una región que consta de las áreas de la región 1 (identificada por pRgn1) que no forman parte de la región 2 (identificada por pRgn2).
RGN_OR Combines ambas regiones en su totalidad (join).
RGN_XOR Combines ambas regiones pero quita superponer áreas.
Valor devuelto
Especifica el tipo de área resultante.Puede ser uno de los siguientes valores:
La región deCOMPLEXREGION Nuevo tiene superponer los bordes.
ERROR ninguna nueva región creada.
La región deNULLREGION New está vacía.
La región deSIMPLEREGION Nuevo no tiene borde que se superpone.
Comentarios
las regiones se combinan según lo especificado por nCombineMode.
se combinan las dos regiones especificadas, y el identificador resultante de la región se almacena en el objeto de CRgn .Por tanto, cualquier región se almacena en el objeto de CRgn se reemplaza por la región combinada.
El tamaño de una región está limitado a 32.767 por 32.767 unidades lógicas o a de memoria de, lo que sea menor.
Uso CopyRgn de copiar una región en otra área.
Ejemplo
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
encabezado: afxwin.h