Condividi tramite


CRgn::CombineRgn

Crea una nuova area GDI combinando due regioni esistenti.

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

Parametri

  • pRgn1
    Identifica un'area esistente.

  • pRgn2
    Identifica un'area esistente.

  • nCombineMode
    Specifica un'operazione da eseguire quando si combinano le due aree di origine.Può essere qualsiasi dei seguenti valori:

    • RGN_AND utilizza le aree sovrapposizione di entrambe le aree (intersezione).

    • RGN_COPY crea una copia dell'area 1 (identificata da pRgn1).

    • RGN_DIFF crea un'area costituita dalle aree di area 1 (identificata da pRgn1) che non fanno parte dell'area 2 (identificata da pRgn2).

    • RGN_OR combina entrambe le aree nella loro interezza (unione).

    • RGN_XOR combina entrambe le aree ma rimuove le aree sovrapposti.

Valore restituito

Specifica il tipo di area risultante.Può essere uno dei seguenti valori:

  • La nuova area diCOMPLEXREGION include bordi sovrapposti.

  • ERRORE Alcuna nuova area creata.

  • La nuova area diNULLREGION è vuota.

  • La nuova area diSIMPLEREGION non include bordi sovrapposti.

Note

Le aree vengono combinati come specificato da nCombineMode.

Le due aree specificate vengono combinate e gestire risultanti l'area sono archiviate nell'oggetto CRgn.Pertanto, qualsiasi area viene memorizzata nell'oggetto CRgn viene sostituito dall'area combinata.

La dimensione di un'area è limitata a 32.767 per 32.767 unità logiche o della memoria, le dimensioni inferiori.

Utilizzo CopyRgn sufficiente copiare un'area in un'altra area.

Esempio

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

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CRgn

Grafico della gerarchia

CRgn::CopyRgn

CombineRgn