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