Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir Windows grafik cihaz arabirimi (GDI) bölgesini kapsüller.
Sözdizimi
class CRgn : public CGdiObject
Üyeler
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| CRgn::CRgn | Bir CRgn nesne oluşturur. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| CRgn::CombineRgn |
CRgn Bir nesneyi, belirtilen CRgn iki nesnenin birleşimine eşdeğer olacak şekilde ayarlar. |
| CRgn::CopyRgn |
CRgn Bir nesneyi, belirtilen CRgn nesnenin bir kopyası olacak şekilde ayarlar. |
| CRgn::CreateEllipticRgn |
CRgn Bir nesneyi eliptik bölgeyle başlatır. |
| CRgn::CreateEllipticRgnIndirect | RECT CRgn yapısı tarafından tanımlanan elips bölgeli bir nesneyi başlatır. |
| CRgn::CreateFromData | Verilen bölgeden ve dönüştürme verilerinden bir bölge oluşturur. |
| CRgn::CreateFromPath | Belirtilen cihaz bağlamı için seçilen yoldan bir bölge oluşturur. |
| CRgn::CreatePolygonRgn | Bir CRgn nesneyi çokgen bir bölgeyle başlatır. Sistem, gerekirse son köşeden ilk köşeye bir çizgi çizerek çokgeni otomatik olarak kapatır. |
| CRgn::CreatePolyPolygonRgn | Bir CRgn dizi kapalı çokgenden oluşan bir bölgeyle bir nesneyi başlatır. Çokgenler kopuk olabilir veya çakışabilir. |
| CRgn::CreateRectRgn | Dikdörtgen bölgeli bir CRgn nesneyi başlatır. |
| CRgn::CreateRectRgnIndirect | BIR CRgnNESNEYI RECT yapısı tarafından tanımlanan dikdörtgen bir bölgeyle başlatır. |
| CRgn::CreateRoundRectRgn | Yuvarlatılmış köşeleri olan dikdörtgen bölgeli bir CRgn nesneyi başlatır. |
| CRgn::EqualRgn | İki CRgn nesnenin eşdeğer olup olmadığını belirlemek için denetler. |
| CRgn::FromHandle | Bir Windows bölgesine tanıtıcı verildiğinde nesneye bir işaretçi CRgn döndürür. |
| CRgn::GetRegionData | Belirtilen arabelleği verilen bölgeyi açıklayan verilerle doldurur. |
| CRgn::GetRgnBox | Bir CRgn nesnenin sınırlayıcı dikdörtgeninin koordinatlarını alır. |
| CRgn::OffsetRgn | Nesneyi CRgn belirtilen uzaklıklara göre taşır. |
| CRgn::P tInRegion | Belirtilen bir noktanın bölgede olup olmadığını belirler. |
| CRgn::RectInRegion | Belirtilen dikdörtgenin herhangi bir bölümünün bölge sınırları içinde olup olmadığını belirler. |
| CRgn::SetRectRgn |
CRgn Nesneyi belirtilen dikdörtgen bölgeye ayarlar. |
Ortak İşleçler
| Veri Akışı Adı | Açıklama |
|---|---|
| CRgn::operator HRGN | Nesnede bulunan Windows tutamacını CRgn döndürür. |
Açıklamalar
Bölge, pencere içindeki eliptik veya çokgen bir alandır. Bölgeleri kullanmak için sınıfının üye işlevlerini sınıfın CRgn üyeleri CDColarak tanımlanan kırpma işlevleriyle kullanırsınız.
Üye işlevleri CRgn , çağrıldıkları bölge nesnesiyle ilgili bilgileri oluşturur, değiştirir ve alır.
kullanma CRgnhakkında daha fazla bilgi için bkz . Grafik Nesneleri.
Devralma Hiyerarşisi
CRgn
Gereksinimler
Üst bilgi: afxwin.h
CRgn::CombineRgn
Mevcut iki bölgeyi birleştirerek yeni bir GDI bölgesi oluşturur.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode);
Parametreler
pRgn1
Mevcut bir bölgeyi tanımlar.
pRgn2
Mevcut bir bölgeyi tanımlar.
nCombineMode
İki kaynak bölge birleştirildiğinde gerçekleştirilecek işlemi belirtir. Aşağıdaki değerlerden herhangi biri olabilir:
RGN_AND Her iki bölgenin de çakışan alanlarını kullanır (kesişim).
RGN_COPY Bölge 1'in bir kopyasını oluşturur (pRgn1 tarafından tanımlanır).
RGN_DIFF Bölge 2'nin parçası olmayan bölge 1 (pRgn1 ile tanımlanır) alanlarından oluşan bir bölge oluşturur (pRgn2 ile tanımlanır).
RGN_OR Her iki bölgeyi de bütün olarak birleştirir (birleşim).
RGN_XOR Her iki bölgeyi birleştirir ancak çakışan alanları kaldırır.
Dönüş Değeri
Sonuçta elde edilen bölgenin türünü belirtir. Aşağıdaki değerlerden biri olabilir:
COMPLEXREGION Yeni bölgenin kenarlıkları çakışıyor.
HATA Yeni bölge oluşturulmamış.
NULLREGION Yeni bölge boş.
SIMPLEREGION Yeni bölgede çakışan kenarlıklar yok.
Açıklamalar
Bölgeler nCombineMode tarafından belirtilen şekilde birleştirilir.
Belirtilen iki bölge birleştirilir ve sonuçta elde edilen bölge tanıtıcısı nesnesinde CRgn depolanır. Bu nedenle, nesnede CRgn depolanan bölge birleşik bölge ile değiştirilir.
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
Bir bölgeyi başka bir bölgeye kopyalamak için CopyRgn kullanın.
Ö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));
CRgn::CopyRgn
pRgnSrc tarafından tanımlanan bölgeyi nesnesine CRgn kopyalar.
int CopyRgn(CRgn* pRgnSrc);
Parametreler
pRgnSrc
Mevcut bir bölgeyi tanımlar.
Dönüş Değeri
Sonuçta elde edilen bölgenin türünü belirtir. Aşağıdaki değerlerden biri olabilir:
COMPLEXREGION Yeni bölgenin kenarlıkları çakışıyor.
HATA Yeni bölge oluşturulmamış.
NULLREGION Yeni bölge boş.
SIMPLEREGION Yeni bölgede çakışan kenarlıklar yok.
Açıklamalar
Yeni bölge, daha önce nesnede CRgn depolanan bölgenin yerini alır. Bu işlev CombineRgn üye işlevinin özel bir örneğidir.
Örnek
CRgn::CreateEllipticRgn örneğine bakın.
CRgn::CreateEllipticRgn
Eliptik bir bölge oluşturur.
BOOL CreateEllipticRgn(
int x1,
int y1,
int x2,
int y2);
Parametreler
x1
Üç noktanın sınırlayıcı dikdörtgeninin sol üst köşesinin mantıksal x koordinatını belirtir.
y1
Üç noktanın sınırlayıcı dikdörtgeninin sol üst köşesinin mantıksal y koordinatını belirtir.
x2
Üç noktanın sınırlayıcı dikdörtgeninin sağ alt köşesinin mantıksal x koordinatını belirtir.
y2
Üç noktanın sınırlayıcı dikdörtgeninin sağ alt köşesinin mantıksal y koordinatını belirtir.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bölge x1, y1, x2 ve y2 tarafından belirtilen sınırlayıcı dikdörtgen tarafından tanımlanır. Bölge nesnesinde CRgn depolanır.
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
İşlevle CreateEllipticRgn oluşturulan bir bölgeyi kullanmayı bitirdiğinde, uygulamanın cihaz bağlamının dışında bir bölge seçmesi ve bu bölgeyi kaldırmak için işlevini kullanması DeleteObject gerekir.
Örnek
CRgn rgnA, rgnB, rgnC;
VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);
VERIFY(rgnC.CreateRectRgn(0, 0, 1, 1));
int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_AND);
ASSERT(nCombineResult != ERROR && nOffsetResult != NULLREGION);
CBrush brA, brB, brC;
VERIFY(brC.CreateHatchBrush(HS_FDIAGONAL, RGB(0, 0, 255))); // Blue
VERIFY(pDC->FillRgn(&rgnC, &brC));
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0))); // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 255, 0))); // rgnB Green
VERIFY(pDC->FrameRgn(&rgnB, &brB, 2, 2));
CRgn::CreateEllipticRgnIndirect
Eliptik bir bölge oluşturur.
BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
Parametreler
lpRect
Üç noktanın sınırlayıcı dikdörtgeninin sol üst ve sağ alt köşelerinin mantıksal koordinatlarını içeren bir RECTCRect yapıya veya nesneye işaret eder.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bölge, lpRect tarafından işaret edilen yapı veya nesne tarafından tanımlanır ve nesnede CRgn depolanır.
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
İşlevle CreateEllipticRgnIndirect oluşturulan bir bölgeyi kullanmayı bitirdiğinde, uygulamanın cihaz bağlamının dışında bir bölge seçmesi ve bu bölgeyi kaldırmak için işlevini kullanması DeleteObject gerekir.
Örnek
CRgn::CreateRectRgnIndirect örneğine bakın.
CRgn::CreateFromData
Verilen bölgeden ve dönüştürme verilerinden bir bölge oluşturur.
BOOL CreateFromData(
const XFORM* lpXForm,
int nCount,
const RGNDATA* pRgnData);
Parametreler
lpXForm
Bölgede gerçekleştirilecek dönüşümü tanımlayan bir XFORM veri yapısını gösterir. Bu işaretçi NULL ise, kimlik dönüşümü kullanılır.
nCount
pRgnData tarafından işaret edilen bayt sayısını belirtir.
pRgnData
Bölge verilerini içeren bir RGNDATA veri yapısını gösterir.
Dönüş Değeri
İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.
Açıklamalar
Bir uygulama, işlevi çağırarak CRgn::GetRegionData bir bölgenin verilerini alabilir.
CRgn::CreateFromPath
Belirtilen cihaz bağlamı için seçilen yoldan bir bölge oluşturur.
BOOL CreateFromPath(CDC* pDC);
Parametreler
pDC
Kapalı yol içeren bir cihaz bağlamı tanımlar.
Dönüş Değeri
İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.
Açıklamalar
pDC parametresi tarafından tanımlanan cihaz bağlamı kapalı bir yol içermelidir. Bir yolu bir bölgeye dönüştürdükten sonra CreateFromPath , Windows kapalı yolu cihaz bağlamından atar.
CRgn::CreatePolygonRgn
Çokgen bir bölge oluşturur.
BOOL CreatePolygonRgn(
LPPOINT lpPoints,
int nCount,
int nMode);
Parametreler
lpPoint'ler
Bir yapı dizisine POINT veya bir nesne dizisine CPoint işaret eder. Her yapı, çokgenin bir köşesinin x koordinatını ve y koordinatını belirtir. Yapı POINT aşağıdaki biçimdedir:
typedef struct tagPOINT {
int x;
int y;
} POINT;
nCount
Dizideki lpPoint'lerinPOINTyapı veya CPoint nesne sayısını belirtir.
nMode
Bölge için doldurma modunu belirtir. Bu parametre, ALTERNATE veya WINDING olabilir.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Sistem, gerekirse son köşeden ilk köşeye bir çizgi çizerek çokgeni otomatik olarak kapatır. Sonuçta elde edilen bölge nesnesinde CRgn depolanır.
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
Çokgen doldurma modu ALTERNATE olduğunda, sistem her tarama çizgisinin tek numaralı ve çift numaralı çokgen kenarları arasındaki alanı doldurur. Diğer bir ifadeyle, sistem birinci ve ikinci taraf arasındaki, üçüncü ve dördüncü taraf arasındaki alanı doldurur ve bu şekilde devam eder.
Çokgen doldurma modu SARGı OLDUĞUNDA, sistem bir alanın doldurulup doldurulmayacağını belirlemek için bir şeklin çizildiği yönü kullanır. Çokgendeki her çizgi kesimi saat yönünde veya saat yönünün tersine çizilir. Kapalı bir alandan şeklin dışına doğru çizilen bir sanal çizgi saat yönündeki bir çizgi kesiminden geçtiğinde, bir sayı artırılır. Satır saat yönünün tersine bir çizgi kesiminden geçtiğinde sayı azalmış olur. Çizgi şeklin dışına ulaştığında sayı sıfır değilse alan doldurulur.
Bir uygulama işleviyle CreatePolygonRgn oluşturulan bir bölgeyi kullanmayı bitirdiğinde, cihaz bağlamının dışında bir bölge seçmeli ve kaldırmak için işlevini kullanmalıdır DeleteObject .
Örnek
CRgn rgnA, rgnB;
CPoint ptVertex[5];
ptVertex[0].x = 180;
ptVertex[0].y = 80;
ptVertex[1].x = 100;
ptVertex[1].y = 160;
ptVertex[2].x = 120;
ptVertex[2].y = 260;
ptVertex[3].x = 240;
ptVertex[3].y = 260;
ptVertex[4].x = 260;
ptVertex[4].y = 160;
VERIFY(rgnA.CreatePolygonRgn(ptVertex, 5, ALTERNATE));
CRect rectRgnBox;
int nRgnBoxResult = rgnA.GetRgnBox(&rectRgnBox);
ASSERT(nRgnBoxResult != ERROR && nRgnBoxResult != NULLREGION);
CBrush brA, brB;
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0))); // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 0, 255))); // Blue
rectRgnBox.InflateRect(3, 3);
pDC->FrameRect(&rectRgnBox, &brB);
CRgn::CreatePolyPolygonRgn
Bir dizi kapalı çokgenden oluşan bir bölge oluşturur.
BOOL CreatePolyPolygonRgn(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount,
int nPolyFillMode);
Parametreler
lpPoint'ler
Bir yapı dizisine POINT veya çokgenlerin köşelerini tanımlayan bir nesne dizisine CPoint işaret eder. Sistem bunları otomatik olarak kapatmadığından her çokgen açıkça kapatılmalıdır. Çokgenler art arda belirtilir. Yapı POINT aşağıdaki biçimdedir:
typedef struct tagPOINT {
int x;
int y;
} POINT;
lpPolyCounts
Bir tamsayı dizisine işaret eder. İlk tamsayı lpPoints dizisindeki ilk çokgendeki köşe sayısını, ikinci tamsayı ikinci çokgendeki köşe sayısını belirtir ve bu şekilde devam eder.
nCount
lpPolyCounts dizisindeki toplam tamsayı sayısını belirtir.
nPolyFillMode
Çokgen doldurma modunu belirtir. Bu değer, ALTERNATE veya WINDING olabilir.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Sonuçta elde edilen bölge nesnesinde CRgn depolanır.
Çokgenler kopuk olabilir veya çakışabilir.
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
Çokgen doldurma modu ALTERNATE olduğunda, sistem her tarama çizgisinin tek numaralı ve çift numaralı çokgen kenarları arasındaki alanı doldurur. Diğer bir ifadeyle, sistem birinci ve ikinci taraf arasındaki, üçüncü ve dördüncü taraf arasındaki alanı doldurur ve bu şekilde devam eder.
Çokgen doldurma modu SARGı OLDUĞUNDA, sistem bir alanın doldurulup doldurulmayacağını belirlemek için bir şeklin çizildiği yönü kullanır. Çokgendeki her çizgi kesimi saat yönünde veya saat yönünün tersine çizilir. Kapalı bir alandan şeklin dışına doğru çizilen bir sanal çizgi saat yönündeki bir çizgi kesiminden geçtiğinde, bir sayı artırılır. Satır saat yönünün tersine bir çizgi kesiminden geçtiğinde sayı azalmış olur. Çizgi şeklin dışına ulaştığında sayı sıfır değilse alan doldurulur.
Bir uygulama işleviyle CreatePolyPolygonRgn oluşturulan bir bölgeyi kullanmayı bitirdiğinde, cihaz bağlamının dışında bir bölge seçmeli ve kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
CRgn::CreateRectRgn
nesnesinde CRgn depolanan dikdörtgen bir bölge oluşturur.
BOOL CreateRectRgn(
int x1,
int y1,
int x2,
int y2);
Parametreler
x1
Bölgenin sol üst köşesinin mantıksal x koordinatını belirtir.
y1
Bölgenin sol üst köşesinin mantıksal y koordinatını belirtir.
x2
Bölgenin sağ alt köşesinin mantıksal x koordinatını belirtir.
y2
Bölgenin sağ alt köşesinin mantıksal y koordinatını belirtir.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
tarafından CreateRectRgnoluşturulan bir bölgeyi kullanmayı bitirdiğinde, bir uygulama bölgeyi kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
Örnek
CRgn rgn;
BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);
Ek bir örnek için bkz . CRgn::CombineRgn.
CRgn::CreateRectRgnIndirect
nesnesinde CRgn depolanan dikdörtgen bir bölge oluşturur.
BOOL CreateRectRgnIndirect(LPCRECT lpRect);
Parametreler
lpRect
Bölgenin sol üst ve sağ alt köşelerinin mantıksal koordinatlarını içeren bir RECT yapıya veya CRect nesneye işaret eder. Yapı RECT aşağıdaki biçimdedir:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
tarafından CreateRectRgnIndirectoluşturulan bir bölgeyi kullanmayı bitirdiğinde, bir uygulama bölgeyi kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
Örnek
CRgn rgnA, rgnB, rgnC;
CRect rectA(50, 50, 150, 150);
CRect rectB(100, 50, 200, 150);
VERIFY(rgnA.CreateRectRgnIndirect(&rectA));
VERIFY(rgnB.CreateEllipticRgnIndirect(&rectB));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));
int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_AND );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );
CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));
VERIFY(pDC->FrameRgn( &rgnA, &brA, 2, 2 )); // rgnA Red
VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));
VERIFY(pDC->FrameRgn( &rgnB, &brB, 2, 2 )); // rgnB Green
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) )); // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));
CRgn::CreateRoundRectRgn
Nesnede CRgn depolanan yuvarlatılmış köşeleri olan dikdörtgen bir bölge oluşturur.
BOOL CreateRoundRectRgn(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
Parametreler
x1
Bölgenin sol üst köşesinin mantıksal x koordinatını belirtir.
y1
Bölgenin sol üst köşesinin mantıksal y koordinatını belirtir.
x2
Bölgenin sağ alt köşesinin mantıksal x koordinatını belirtir.
y2
Bölgenin sağ alt köşesinin mantıksal y koordinatını belirtir.
x3
Yuvarlatılmış köşeleri oluşturmak için kullanılan üç noktanın genişliğini belirtir.
y3
Yuvarlatılmış köşeleri oluşturmak için kullanılan üç noktanın yüksekliğini belirtir.
Dönüş Değeri
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bölgenin boyutu 32.767 ile 32.767 mantıksal birim veya 64K bellek (hangisi daha küçükse) ile sınırlıdır.
Bir uygulama işleviyle CreateRoundRectRgn oluşturulan bir bölgeyi kullanmayı bitirdiğinde, cihaz bağlamının dışında bir bölge seçmeli ve kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
Örnek
CRgn rgnA, rgnB, rgnC;
VERIFY(rgnA.CreateRoundRectRgn( 50, 50, 150, 150, 30, 30 ));
VERIFY(rgnB.CreateRoundRectRgn( 200, 75, 250, 125, 50, 50 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));
int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );
CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));
VERIFY(pDC->FillRgn( &rgnA, &brA)); // rgnA Red Filled
VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));
VERIFY(pDC->FillRgn( &rgnB, &brB)); // rgnB Green Filled
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) )); // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));
CRgn::CRgn
Bir CRgn nesne oluşturur.
CRgn();
Açıklamalar
Veri m_hObject üyesi, nesne bir veya daha fazla CRgn üye işleviyle başlatılana kadar geçerli bir Windows GDI bölgesi içermez.
Örnek
CRgn::CreateRoundRectRgn örneğine bakın.
CRgn::EqualRgn
Verilen bölgenin nesnede CRgn depolanan bölgeyle eşdeğer olup olmadığını belirler.
BOOL EqualRgn(CRgn* pRgn) const;
Parametreler
pRgn
Bir bölgeyi tanımlar.
Dönüş Değeri
İki bölge eşdeğerse sıfır olmayan; aksi takdirde 0.
Örnek
CRgn rgnA, rgnB;
VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);
ASSERT(FALSE == rgnB.EqualRgn(&rgnA));
CRgn::FromHandle
Bir Windows bölgesine tanıtıcı verildiğinde nesneye bir işaretçi CRgn döndürür.
static CRgn* PASCAL FromHandle(HRGN hRgn);
Parametreler
hRgn
Bir Windows bölgesinin tanıtıcısını belirtir.
Dönüş Değeri
Nesne işaretçisi CRgn . İşlev başarılı olmazsa, dönüş değeri NULL olur.
Açıklamalar
Bir CRgn nesne tanıtıcıya zaten bağlı değilse, geçici CRgn bir nesne oluşturulur ve eklenir. Bu geçici CRgn nesne, yalnızca uygulamanın olay döngüsünde boşta kalma süresine sahip olduğu ve tüm geçici grafik nesnelerinin silindiği bir sonraki zamana kadar geçerlidir. Bunu söylemenin bir diğer yolu da geçici nesnenin yalnızca bir pencere iletisinin işlenmesi sırasında geçerli olmasıdır.
CRgn::GetRegionData
Belirtilen arabelleği bölgeyi açıklayan verilerle doldurur.
int GetRegionData(
LPRGNDATA lpRgnData,
int nCount) const;
Parametreler
lpRgnData
Bilgileri alan bir RGNDATA veri yapısına işaret eder. Bu parametre NULL ise, dönüş değeri bölge verileri için gereken bayt sayısını içerir.
nCount
lpRgnData arabelleğinin bayt cinsinden boyutunu belirtir.
Dönüş Değeri
İşlev başarılı olursa ve nCount yeterli sayıda bayt belirtirse, dönüş değeri her zaman nCount olur. İşlev başarısız olursa veya nCount yeterli sayıdan az bayt belirtiyorsa, dönüş değeri 0 (hata) olur.
Açıklamalar
Bu veriler, bölgeyi oluşturan dikdörtgenlerin boyutlarını içerir. Bu işlev, işlevle CRgn::CreateFromData birlikte kullanılır.
CRgn::GetRgnBox
Nesnenin sınırlayıcı dikdörtgeninin CRgn koordinatlarını alır.
int GetRgnBox(LPRECT lpRect) const;
Parametreler
lpRect
Sınırlayıcı dikdörtgenin koordinatlarını almak için bir RECT yapıya veya CRect nesneye işaret eder. Yapı RECT aşağıdaki biçimdedir:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Dönüş Değeri
Bölgenin türünü belirtir. Aşağıdaki değerlerden herhangi biri olabilir:
COMPLEXREGION Bölgesi'nin kenarlıkları çakışıyor.
NULLREGION Bölgesi boş.
ERROR
CRgnnesnesi geçerli bir bölge belirtmiyor.SIMPLEREGION Bölgesi'nin çakışan kenarlıkları yok.
Örnek
CRgn::CreatePolygonRgn örneğine bakın.
CRgn::OffsetRgn
Nesnede CRgn depolanan bölgeyi belirtilen uzaklıklara göre taşır.
int OffsetRgn(
int x,
int y);
int OffsetRgn(POINT point);
Parametreler
x
Sola veya sağa taşınacak birim sayısını belirtir.
y
Yukarı veya aşağı taşınacak birim sayısını belirtir.
nokta
Noktanın x koordinatı, sola veya sağa taşınacak birim sayısını belirtir. Noktanın y koordinatı, yukarı veya aşağı taşınacak birim sayısını belirtir.
Point parametresi bir POINT yapı veya CPoint nesne olabilir.
Dönüş Değeri
Yeni bölgenin türü. Aşağıdaki değerlerden herhangi biri olabilir:
COMPLEXREGION Bölgesi'nin kenarlıkları çakışıyor.
HATA Bölge tutamacı geçerli değil.
NULLREGION Bölgesi boş.
SIMPLEREGION Bölgesi'nin çakışan kenarlıkları yok.
Açıklamalar
İşlev, x bölgesini x ekseni boyunca, y birimlerini ise y ekseni boyunca taşır.
Bir bölgenin koordinat değerleri 32.767'den küçük veya buna eşit ve -32.768'den büyük veya buna eşit olmalıdır. Geçersiz bölge koordinatlarını önlemek için x ve y parametreleri dikkatli bir şekilde seçilmelidir.
Örnek
CRgn::CreateEllipticRgn örneğine bakın.
CRgn::operator HRGN
Nesnenin ekli Windows GDI tutamacını CRgn almak için bu işleci kullanın.
operator HRGN() const;
Dönüş Değeri
Başarılı olursa, nesne tarafından temsil edilen Windows GDI nesnesinin CRgn tanıtıcısı; aksi takdirde NULL.
Açıklamalar
Bu işleç, bir HRGN nesnesinin doğrudan kullanımını destekleyen bir atama işlecidir.
Grafik nesnelerini kullanma hakkında daha fazla bilgi için Windows SDK'sında Grafik Nesneleri makalesine bakın.
CRgn::P tInRegion
x ve y
BOOL PtInRegion(
int x,
int y) const;
BOOL PtInRegion(POINT point) const;
Parametreler
x
Test için noktanın mantıksal x koordinatını belirtir.
y
Sınanacak noktanın mantıksal y koordinatını belirtir.
nokta
Noktanın x ve y koordinatları değerini test etmek için noktanın x ve y koordinatlarını belirtir.
Point parametresi bir POINT yapı veya CPoint nesne olabilir.
Dönüş Değeri
Nokta bölgedeyse sıfır olmayan; aksi takdirde 0.
CRgn::RectInRegion
lpRect tarafından belirtilen dikdörtgenin herhangi bir bölümünün nesnede CRgn depolanan bölgenin sınırları içinde olup olmadığını belirler.
BOOL RectInRegion(LPCRECT lpRect) const;
Parametreler
lpRect
Bir RECT yapıyı veya CRect nesneyi gösterir. Yapı RECT aşağıdaki biçimdedir:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Dönüş Değeri
Belirtilen dikdörtgenin herhangi bir bölümü bölge sınırları içinde yer alırsa sıfır olmayan; aksi takdirde 0.
CRgn::SetRectRgn
Dikdörtgen bir bölge oluşturur.
void SetRectRgn(
int x1,
int y1,
int x2,
int y2);
void SetRectRgn(LPCRECT lpRect);
Parametreler
x1
Dikdörtgen bölgenin sol üst köşesinin x koordinatını belirtir.
y1
Dikdörtgen bölgenin sol üst köşesinin y koordinatını belirtir.
x2
Dikdörtgen bölgenin sağ alt köşesinin x koordinatını belirtir.
y2
Dikdörtgen bölgenin sağ alt köşesinin y koordinatını belirtir.
lpRect
Dikdörtgen bölgeyi belirtir. Bir yapıya veya RECT nesneye CRect işaretçi olabilir.
Açıklamalar
Ancak CreateRectRgn'den farklı olarak, yerel Windows uygulama yığınından ek bellek ayırmaz. Bunun yerine, nesnesinde CRgn depolanan bölge için ayrılan alanı kullanır. Bu, nesnesini çağırmadan CRgn önce SetRectRgngeçerli bir Windows bölgesiyle zaten başlatılmış olması gerektiği anlamına gelir. x1, y1, x2 ve y2 tarafından verilen noktalar ayrılan alanın en düşük boyutunu belirtir.
Yerel bellek yöneticisine CreateRectRgn çağrı yapmaktan kaçınmak için üye işlevi yerine bu işlevi kullanın.