CRgn Sınıfı
Bir Windows grafik cihaz arabirimi (GDI) bölgesini kapsüller.
class CRgn : public CGdiObject
Veri Akışı Adı | Açıklama |
---|---|
CRgn::CRgn | Bir CRgn nesne oluşturur. |
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 CRgn nesneyi RECTtructure 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. |
Veri Akışı Adı | Açıklama |
---|---|
CRgn::operator HRGN | Nesnede bulunan Windows tutamacını CRgn döndürür. |
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 CDC
olarak 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 CRgn
hakkında daha fazla bilgi için bkz . Grafik Nesneleri.
CRgn
Üst bilgi: afxwin.h
Mevcut iki bölgeyi birleştirerek yeni bir GDI bölgesi oluşturur.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode);
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.
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.
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.
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));
pRgnSrc tarafından tanımlanan bölgeyi nesnesine CRgn
kopyalar.
int CopyRgn(CRgn* pRgnSrc);
pRgnSrc
Mevcut bir bölgeyi tanımlar.
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.
Yeni bölge, daha önce nesnede CRgn
depolanan bölgenin yerini alır. Bu işlev CombineRgn üye işlevinin özel bir örneğidir.
CRgn::CreateEllipticRgn örneğine bakın.
Eliptik bir bölge oluşturur.
BOOL CreateEllipticRgn(
int x1,
int y1,
int x2,
int y2);
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.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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.
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));
Eliptik bir bölge oluşturur.
BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
lpRect
Üç noktanın sınırlayıcı dikdörtgeninin sol üst ve sağ alt köşelerinin mantıksal koordinatlarını içeren bir RECT
CRect
yapıya veya nesneye işaret eder.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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.
CRgn::CreateRectRgnIndirect örneğine bakın.
Verilen bölgeden ve dönüştürme verilerinden bir bölge oluşturur.
BOOL CreateFromData(
const XFORM* lpXForm,
int nCount,
const RGNDATA* pRgnData);
lpXForm
Bölgede gerçekleştirilecek dönüşümü tanımlayan bir XFORMata 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.
İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.
Bir uygulama, işlevi çağırarak CRgn::GetRegionData
bir bölgenin verilerini alabilir.
Belirtilen cihaz bağlamı için seçilen yoldan bir bölge oluşturur.
BOOL CreateFromPath(CDC* pDC);
pDC
Kapalı yol içeren bir cihaz bağlamı tanımlar.
İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.
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.
Çokgen bir bölge oluşturur.
BOOL CreatePolygonRgn(
LPPOINT lpPoints,
int nCount,
int nMode);
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'lerin işaret ettiği yapı veya CPoint
nesne sayısını POINT
belirtir.
nMode
Bölge için doldurma modunu belirtir. Bu parametre, ALTERNATE veya WINDING olabilir.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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
.
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);
Bir dizi kapalı çokgenden oluşan bir bölge oluşturur.
BOOL CreatePolyPolygonRgn(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount,
int nPolyFillMode);
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.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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.
nesnesinde CRgn
depolanan dikdörtgen bir bölge oluşturur.
BOOL CreateRectRgn(
int x1,
int y1,
int x2,
int y2);
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.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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 CreateRectRgn
oluşturulan bir bölgeyi kullanmayı bitirdiğinde, bir uygulama bölgeyi kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
CRgn rgn;
BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);
Ek bir örnek için bkz . CRgn::CombineRgn.
nesnesinde CRgn
depolanan dikdörtgen bir bölge oluşturur.
BOOL CreateRectRgnIndirect(LPCRECT lpRect);
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;
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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 CreateRectRgnIndirect
oluşturulan bir bölgeyi kullanmayı bitirdiğinde, bir uygulama bölgeyi kaldırmak için CGDIObject::D eleteObject üye işlevini kullanmalıdır.
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 ));
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);
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.
İşlem başarılı olursa sıfır olmayan; aksi takdirde 0.
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.
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 ));
Bir CRgn
nesne oluşturur.
CRgn();
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.
CRgn::CreateRoundRectRgn örneğine bakın.
Verilen bölgenin nesnede CRgn
depolanan bölgeyle eşdeğer olup olmadığını belirler.
BOOL EqualRgn(CRgn* pRgn) const;
pRgn
Bir bölgeyi tanımlar.
İki bölge eşdeğerse sıfır olmayan; aksi takdirde 0.
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));
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);
hRgn
Bir Windows bölgesinin tanıtıcısını belirtir.
Nesne işaretçisi CRgn
. İşlev başarılı olmazsa, dönüş değeri NULL olur.
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.
Belirtilen arabelleği bölgeyi açıklayan verilerle doldurur.
int GetRegionData(
LPRGNDATA lpRgnData,
int nCount) const;
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.
İş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.
Bu veriler, bölgeyi oluşturan dikdörtgenlerin boyutlarını içerir. Bu işlev, işlevle CRgn::CreateFromData
birlikte kullanılır.
Nesnenin sınırlayıcı dikdörtgeninin CRgn
koordinatlarını alır.
int GetRgnBox(LPRECT lpRect) const;
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;
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
CRgn
nesnesi geçerli bir bölge belirtmiyor.SIMPLEREGION Bölgesi'nin çakışan kenarlıkları yok.
CRgn::CreatePolygonRgn örneğine bakın.
Nesnede CRgn
depolanan bölgeyi belirtilen uzaklıklara göre taşır.
int OffsetRgn(
int x,
int y);
int OffsetRgn(POINT point);
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.
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.
İş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.
CRgn::CreateEllipticRgn örneğine bakın.
Nesnenin ekli Windows GDI tutamacını CRgn
almak için bu işleci kullanın.
operator HRGN() const;
Başarılı olursa, nesne tarafından temsil edilen Windows GDI nesnesinin CRgn
tanıtıcısı; aksi takdirde NULL.
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.
x ve y tarafından verilen noktanın nesnede CRgn
depolanan bölgede olup olmadığını denetler.
BOOL PtInRegion(
int x,
int y) const;
BOOL PtInRegion(POINT point) const;
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.
Nokta bölgedeyse sıfır olmayan; aksi takdirde 0.
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;
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;
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.
Dikdörtgen bir bölge oluşturur.
void SetRectRgn(
int x1,
int y1,
int x2,
int y2);
void SetRectRgn(LPCRECT lpRect);
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 CRect
nesneye RECT
işaretçi olabilir.
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 SetRectRgn
geç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.