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