CRgn::CombineRgn

Erstellt einen neuen GDI-Bereich durch die Kombination aus zwei vorhandenen Bereichen.

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

Parameter

  • pRgn1
    Identifiziert einen vorhandenen Bereich.

  • pRgn2
    Identifiziert einen vorhandenen Bereich.

  • nCombineMode
    Gibt den auszuführende Operation fest, wenn die beiden Quellgebiete kombinieren.Er kann einen der folgenden Werte aufweisen:

    • RGN_AND verwendet überlappende Bereiche beider Bereiche (Schnittmenge).

    • RGN_COPY wird eine Kopie des Bereichs 1 (identifiziert durch pRgn1).

    • RGN_DIFF wird ein Bereich erstellt, der aus den Bereichen des Bereichs 1 besteht (identifiziert durch pRgn1) die nicht Teil Bereich 2 sind (identifiziert durch pRgn2).

    • RGN_OR kombiniert beide Bereiche in ihrer Gesamtheit Union ().

    • RGN_XOR kombiniert, beide Bereiche jedoch entfernt überlappende Bereiche.

Rückgabewert

Gibt den Typ des resultierenden Bereichs an.Es kann einer der folgenden Werte sein:

  • Neuer Bereich COMPLEXREGION hat überlappende Rahmen.

  • ERROR kein neuer Bereich erstellt.

  • Neuer Bereich NULLREGION ist leer.

  • Neuer Bereich SIMPLEREGION hat keine überlappenden Rahmen.

Hinweise

Die Bereiche werden kombiniert, wie durch nCombineMode angegeben.

Die zwei angegebenen Bereiche werden kombiniert, und das resultierende Bereichshandle wird im CRgn-Objekt gespeichert.Daher was Bereich im CRgn-Objekt gespeichert wird, wird durch den kombinierten Bereich ersetzt.

Die Größe eines Bereichs ist auf 32.767 durch 32.767 logische Einheiten oder zu von je des Arbeitsspeichers beschränkt, das kleiner ist.

Verwendung CopyRgn, einen Bereich in einen anderen Bereich einfach zu kopieren.

Beispiel

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CRgn-Klasse

Hierarchien-Diagramm

CRgn::CopyRgn

CombineRgn