Sdílet prostřednictvím


CRgn::CombineRgn

Vytvoří novou oblast GDI kombinací dvou existujících oblastí.

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

Parametry

  • pRgn1
    Určuje existující oblasti.

  • pRgn2
    Určuje existující oblasti.

  • nCombineMode
    Určuje operace, které mají být provedeny při kombinování dva zdrojové oblasti.Může být některá z následujících hodnot:

    • RGN_AND používá překrývající se oblasti obou regionů (průsečík).

    • RGN_COPY vytvoří kopii oblast 1 (podle pRgn1 ).

    • RGN_DIFF vytvoří oblast sestávající z oblasti oblast 1 (označeny pRgn1 ) nejsou součástí regionu 2 (podle pRgn2 ).

    • RGN_OR kombinuje oba regiony jako celek (unie).

    • RGN_XOR kombinuje oba regiony, ale odebere překrývajících se oblastí.

Vrácená hodnota

Určuje typ výsledné regionu.Může být jedna z následujících hodnot:

  • COMPLEXREGION novou oblast má překrývající se okraje.

  • Chyba žádné nové oblasti vytvořen.

  • NULLREGION novou oblast je prázdná.

  • SIMPLEREGION novou oblast nemá překrývající se okraje.

Poznámky

Regiony jsou kombinovány podle nCombineMode .

Dva zadané oblasti jsou kombinovány a výsledné popisovač oblasti je uložena v CRgn objektu.Proto jakékoli oblasti uložena v CRgn objektu nahrazuje kombinované regionu.

Velikost oblasti je omezena na 32 767 ve 32 767 logické jednotky nebo 64 kB paměti, podle toho, co je menší.

Použití CopyRgn jednoho regionu jednoduše zkopírovat do jiné oblasti.

Příklad

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

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CRgn

Graf hierarchie

CRgn::CopyRgn

CombineRgn