Compartir a través de


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

Vea también

Referencia

CRgn (clase)

Gráfico de jerarquías

CRgn::CopyRgn

CombineRgn