Aracılığıyla paylaş


CRgn Sınıfı

Bir Windows grafik cihaz arabirimi (GDI) bölgesini kapsüller.

Sözdizimi

class CRgn : public CGdiObject

Üyeler

Ortak Oluşturucular

Ad Tanım
CRgn::CRgn Bir CRgn nesne oluşturur.

Genel Yöntemler

Ad Tanım
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.

Ortak İşleçler

Ad Tanım
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

Cobject

Cgdiobject

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.

İade 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.

İade 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.

İade 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.

İade 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 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.

İade 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.

İade 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

Lppoints
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.

İade 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

Lppoints
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.

İade 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.

İade 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;

İade 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.

İade 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.

İade 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.

İade 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.

İade 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;

İade 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 CRgn nesnesi 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.

İade 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;

İade 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 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;

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.

İade 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;

İade 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 CRect nesneye RECT 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.

Ayrıca bkz.

CWnd Sınıfı
Hiyerarşi Grafiği