Aracılığıyla paylaş


CRgn::CombineRgn

Varolan iki bölgeye birleştirerek yeni bir GDI bölge oluşturur.

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

Parametreler

  • pRgn1
    Varolan bir bölgeyi tanımlar.

  • pRgn2
    Varolan bir bölgeyi tanımlar.

  • nCombineMode
    İki kaynak bölgeleri birleştirilirken gerçekleştirilecek işlemi belirtir.Aşağıdaki değerlerden biri olabilir:

    • rgn_and (kesişim) her iki bölgeden örtüşen alanlarını kullanır.

    • rgn_copy 1 bölgenin kopyasını oluşturur (tarafından tanımlanan pRgn1).

    • RGN_DIFF bölge 1 alanlarının oluşan bir bölge oluşturur (tarafından tanımlanan pRgn1) olmayan bölge 2 parçası (tarafından tanımlanan pRgn2).

    • rgn_or her iki bölgeden (union) bütünlükleri içinde birleştirir.

    • rgn_xor her iki bölgeden birleştirir, ancak çakışan alanları kaldırır.

Dönüş Değeri

Sonuçta elde edilen bölge türünü belirtir.Aşağıdaki değerlerden biri olabilir:

  • COMPLEXREGION yeni bölge olan kenarlıklar üst üste.

  • HATA oluşturulan yeni bölge.

  • NULLREGION yeni bölge boş.

  • SIMPLEREGION yeni bölge örtüşen bir kenarlık vardır.

Notlar

Bölgelerin birleşik belirtildiği gibi nCombineMode.

İki belirtilen bölgeler birleştirilir ve elde edilen bölge tanıtıcısı depolanır CRgn nesnesi.Bu nedenle, ne olursa olsun bölge depolanır CRgn nesne birleşik bölgeye göre değiştirilir.

Bir bölgenin boyutunu 32.767 ile 32,767 mantıksal birimler ya da bellek 64 k sınırlı, hangisi daha küçüktür.

Use CopyRgn sadece tek bir bölge başka bir bölgeye kopyalamak için.

Örnek

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

Gereksinimler

Başlık: afxwin.h

Ayrıca bkz.

Başvuru

CRgn Sınıfı

Hiyerarşi grafik

CRgn::CopyRgn

CombineRgn