Partager via


CRgn::CombineRgn

Crée une nouvelle zone GDI en combinant deux régions existantes.

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

Paramètres

  • pRgn1
    Identifie une zone existante.

  • pRgn2
    Identifie une zone existante.

  • nCombineMode
    Spécifie l'exécution à exécuter en combinant les deux régions source.Il peut être l'une des valeurs suivantes :

    • RGN_AND utilise superposer des régions des deux régions (intersection).

    • RGN_COPY crée une copie de la zone 1 (identifiée par pRgn1).

    • RGN_DIFF crée une zone comprenant les régions de la zone 1 (identifiée par pRgn1) qui ne font pas partie de la zone 2 (identifiée par pRgn2).

    • RGN_OR combine les deux régions dans son intégralité (union).

    • RGN_XOR combine les deux régions mais supprime superposer des zones.

Valeur de retour

Spécifie le type de la zone résultant.Il peut être l'une des valeurs suivantes :

  • La nouvelle zone deCOMPLEXREGION a superposer des zones.

  • erreur Aucune zone créée.

  • La nouvelle zone deNULLREGION est vide.

  • La nouvelle zone deSIMPLEREGION n'a aucun superposés zone.

Notes

Les régions sont combinées comme spécifié par nCombineMode.

Les deux régions spécifiées sont combinées, et le handle résultant de zone est stocké dans l'objet d' CRgn .Ainsi, c'est-à-dire que zone est stockée dans l'objet d' CRgn est remplacé par la zone combinée.

La taille d'une zone est limitée à 32.767 par 32.767 unités logiques ou ko à de mémoire, ce qui est plus petit.

Utilisation CopyRgn de copier simplement une zone dans une autre zone.

Exemple

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CRgn, classe

Graphique de la hiérarchie

CRgn::CopyRgn

CombineRgn