Megosztás:


CRgn osztály

Beágyaz egy Windows grafikus eszközillesztő (GDI) régiót.

Szemantika

class CRgn : public CGdiObject

Tagok

Nyilvános konstruktorok

Név Leírás
CRgn::CRgn Egy CRgn objektumot hoz létre.

Nyilvános metódusok

Név Leírás
CRgn::CombineRgn Úgy állít be egy CRgn objektumot, hogy az egyenértékű legyen két megadott CRgn objektum egyesítésével.
CRgn::CopyRgn Úgy állít be egy CRgn objektumot, hogy az egy adott CRgn objektum másolata legyen.
CRgn::CreateEllipticRgn Egy objektum inicializálása CRgn elliptikus régióval.
CRgn::CreateEllipticRgnIndirect Inicializál egy CRgn objektumot egy RECT-struktúra által meghatározott háromliptikus régióval.
CRgn::CreateFromData Létrehoz egy régiót az adott régióból és az átalakítási adatokból.
CRgn::CreateFromPath Létrehoz egy régiót az adott eszközkörnyezetbe kijelölt elérési útból.
CRgn::CreatePolygonRgn Inicializál egy CRgn objektumot sokszög régióval. A rendszer szükség esetén automatikusan bezárja a sokszöget úgy, hogy egy vonalat rajzol az utolsó csúcsról az elsőre.
CRgn::CreatePolyPolygonRgn Inicializál egy CRgn objektumot egy olyan régióval, amely zárt sokszögekből álló sorozatból áll. A sokszögek különállóak lehetnek, vagy átfedésben lehetnek.
CRgn::CreateRectRgn Egy négyszögletes területtel rendelkező objektum inicializálása CRgn .
CRgn::CreateRectRgnIndirect Inicializál egy CRgn objektumot egy RECT-struktúra által meghatározott téglalap alakú régióval.
CRgn::CreateRoundRectRgn Egy téglalap alakú területű objektum inicializálása CRgn lekerekített sarkokkal.
CRgn::EqualRgn Két CRgn objektumot ellenőriz annak megállapításához, hogy azok egyenértékűek-e.
CRgn::FromHandle Egy objektumra mutató CRgn mutatót ad vissza, ha egy Windows-régiónak adott fogót.
CRgn::GetRegionData Kitölti a megadott puffert az adott régiót leíró adatokkal.
CRgn::GetRgnBox Lekéri egy objektum határoló téglalapjának koordinátáit CRgn .
CRgn::OffsetRgn Objektum áthelyezése CRgn a megadott eltolások szerint.
CRgn::P tInRegion Meghatározza, hogy egy adott pont a régióban van-e.
CRgn::RectInRegion Meghatározza, hogy egy adott téglalap bármely része a régió határain belül van-e.
CRgn::SetRectRgn Beállítja az CRgn objektumot a megadott téglalap alakú régióra.

Nyilvános operátorok

Név Leírás
CRgn::operátor HRGN Az objektumban található Windows-leírót CRgn adja vissza.

Megjegyzések

A régió egy ellipszis vagy sokszög alakú terület egy ablakban. Régiók használatához az osztály CRgn tagfüggvényei és az osztálytagként CDCdefiniált kivágási függvények használhatók.

A létrehozás, módosítás és lekérés tagfüggvényei CRgn annak a régióobjektumnak az adatai, amelyekre meghívják őket.

A használatról CRgntovábbi információt a Grafikus objektumok című témakörben talál.

Öröklési hierarchia

CObject

CGdiObject

CRgn

Követelmények

fejléc: afxwin.h

CRgn::CombineRgn

Létrehoz egy új GDI-régiót két meglévő régió kombinálásával.

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

Paraméterek

pRgn1
Egy meglévő régiót azonosít.

pRgn2
Egy meglévő régiót azonosít.

nCombineMode
Meghatározza a két forrásrégió egyesítésekor végrehajtandó műveletet. Az alábbi értékek bármelyike lehet:

  • RGN_AND Mindkét régió (metszet) átfedésben lévő területeit használja.

  • RGN_COPY Létrehoz egy másolatot az 1. régióról (amelyet a pRgn1 azonosít).

  • RGN_DIFF Létrehoz egy régiót, amely az 1. régió ( a pRgn1 által azonosított) területekből áll, amelyek nem részei a 2. régiónak (a pRgn2 azonosítja).

  • RGN_OR Egyesíti mindkét régiót teljes egészében (unió).

  • RGN_XOR Egyesíti mindkét régiót, de eltávolítja az átfedésben lévő területeket.

Visszaadott érték

Az eredményként kapott régió típusát adja meg. A következő értékek egyike lehet:

  • COMPLEXREGION Az új régió átfedésben lévő szegélyekkel rendelkezik.

  • HIBA: Nincs új régió létrehozva.

  • A NULLREGION Új régió üres.

  • SIMPLEREGION Az új régiónak nincsenek átfedésben lévő szegélyek.

Megjegyzések

A régiók az nCombineMode által megadott módon vannak kombinálva.

A két megadott régió kombinálva van, és az eredményként kapott régióleíró az CRgn objektumban van tárolva. Így az objektumban CRgn tárolt bármely régiót felváltja az egyesített régió.

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

A CopyRgn használatával egyszerűen másolhat egy régiót egy másik régióba.

példa

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

Másolja a pRgnSrc által definiált régiót az CRgn objektumba.

int CopyRgn(CRgn* pRgnSrc);

Paraméterek

pRgnSrc
Egy meglévő régiót azonosít.

Visszaadott érték

Az eredményként kapott régió típusát adja meg. A következő értékek egyike lehet:

  • COMPLEXREGION Az új régió átfedésben lévő szegélyekkel rendelkezik.

  • HIBA: Nincs új régió létrehozva.

  • A NULLREGION Új régió üres.

  • SIMPLEREGION Az új régiónak nincsenek átfedésben lévő szegélyek.

Megjegyzések

Az új régió lecseréli az objektumban korábban tárolt régiót CRgn . Ez a függvény a CombineRgn tagfüggvény speciális esete.

példa

Lásd a CRgn::CreateEllipticRgn példát.

CRgn::CreateEllipticRgn

Egy háromliptikus régiót hoz létre.

BOOL CreateEllipticRgn(
    int x1,
    int y1,
    int x2,
    int y2);

Paraméterek

x1
A három pont határoló téglalapjának bal felső sarkának logikai x koordinátáját adja meg.

y1
A három pont határoló téglalapjának bal felső sarkában lévő logikai y koordinátát adja meg.

x2
A három pont határoló téglalapjának jobb alsó sarkának logikai x koordinátáját adja meg.

y2
A három pont határoló téglalapjának jobb alsó sarkának logikai y koordinátáját adja meg.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

A régiót az x1, y1, x2 és y2 által megadott határoló téglalap határozza meg. A régió az CRgn objektumban van tárolva.

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha befejezte a CreateEllipticRgn függvényrel létrehozott régió használatát, az alkalmazásnak ki kell választania a régiót az eszközkörnyezetből, és a DeleteObject függvény használatával el kell távolítania azt.

példa

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

Egy háromliptikus régiót hoz létre.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Paraméterek

lpRect
RECT A három pont határoló téglalapjának bal felső és jobb alsó sarkában lévő logikai koordinátákat tartalmazó szerkezetre vagy CRect objektumra mutat.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

A régiót az lpRect által mutatott struktúra vagy objektum határozza meg, és az CRgn objektum tárolja.

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha befejezte a CreateEllipticRgnIndirect függvényrel létrehozott régió használatát, az alkalmazásnak ki kell választania a régiót az eszközkörnyezetből, és a DeleteObject függvény használatával el kell távolítania azt.

példa

Lásd a CRgn::CreateRectRgnIndirect példát.

CRgn::CreateFromData

Létrehoz egy régiót az adott régióból és az átalakítási adatokból.

BOOL CreateFromData(
    const XFORM* lpXForm,
    int nCount,
    const RGNDATA* pRgnData);

Paraméterek

lpXForm
Egy XFORM-adatstruktúrára mutat, amely meghatározza a régión végrehajtandó átalakítást. Ha ez a mutató NULL értékű, az identitásátalakítást használja a rendszer.

nCount
A pRgnData által mutatott bájtok számát adja meg.

pRgnData
A régióadatokat tartalmazó RGNDATA-adatstruktúrára mutat.

Visszaadott érték

Nonzero, ha a függvény sikeres; egyéb esetben 0.

Megjegyzések

Az alkalmazások a függvény meghívásával lekérhetik egy CRgn::GetRegionData régió adatait.

CRgn::CreateFromPath

Létrehoz egy régiót az adott eszközkörnyezetbe kijelölt elérési útból.

BOOL CreateFromPath(CDC* pDC);

Paraméterek

pDC
Egy lezárt elérési utat tartalmazó eszközkörnyezetet azonosít.

Visszaadott érték

Nonzero, ha a függvény sikeres; egyéb esetben 0.

Megjegyzések

A pDC paraméter által azonosított eszközkörnyezetnek zárt elérési utat kell tartalmaznia. Miután CreateFromPath régióvá alakította az elérési utat, a Windows elveti a lezárt elérési utat az eszközkörnyezetből.

CRgn::CreatePolygonRgn

Sokszögű régiót hoz létre.

BOOL CreatePolygonRgn(
    LPPOINT lpPoints,
    int nCount,
    int nMode);

Paraméterek

lpPoints
POINT Struktúrák vagy objektumok tömbjeire CPoint mutat. Minden struktúra a sokszög egy csúcsának x koordinátáját és y koordinátáját adja meg. A POINT struktúra formája a következő:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

nCount
Az POINT által mutatott tömbben lévő struktúrák vagy CPoint objektumok számát adja meg.

nMode
Megadja a régió kitöltési módját. Ez a paraméter lehet ALTERNATÍV vagy TEKERCSELÉS.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

A rendszer szükség esetén automatikusan bezárja a sokszöget úgy, hogy egy vonalat rajzol az utolsó csúcsról az elsőre. Az eredményként kapott régiót az CRgn objektum tárolja.

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha a sokszögkitöltési mód ALTERNATÍV, a rendszer kitölti a páratlan számú és a páros számú sokszög oldala közötti területet az egyes vizsgálati vonalakon. Vagyis a rendszer kitölti az első és a második oldal, a harmadik és a negyedik oldal közötti területet, és így tovább.

Ha a sokszög-kitöltési mód TEKERCSELÉS, a rendszer az ábra megrajzolásának irányát használja annak meghatározására, hogy kitölt-e egy területet. A sokszögben lévő egyes vonalszakaszok az óramutató járásával megegyező vagy az óramutató járásával ellentétes irányban lesznek rajzolva. Amikor egy képzetes vonal egy zárt területről egy ábra külső felé halad át az óramutató járásával megegyező irányban, a szám növekszik. Ha a vonal az óramutató járásával ellentétes vonalszakaszon halad át, a szám csökken. A terület akkor van kitöltve, ha a szám nem nulla, amikor a vonal eléri az ábra külső részét.

Ha egy alkalmazás befejezte a CreatePolygonRgn függvénnyel létrehozott régió használatát, ki kell választania a régiót az eszközkörnyezetből, és a DeleteObject függvény használatával el kell távolítania.

példa

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

Egy zárt sokszögekből álló régiót hoz létre.

BOOL CreatePolyPolygonRgn(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount,
    int nPolyFillMode);

Paraméterek

lpPoints
A sokszögek csúcsait meghatározó struktúrák vagy objektumtömbök tömbjeire POINTCPoint mutat. Minden sokszöget explicit módon kell bezárni, mert a rendszer nem zárja be őket automatikusan. A sokszögek egymás után vannak megadva. A POINT struktúra formája a következő:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

lpPolyCounts
Egész számokat tartalmazó tömbre mutat. Az első egész szám az lpPoints tömb első sokszögében lévő csúcsok számát adja meg, a második egész szám pedig a második sokszög csúcsainak számát és így tovább.

nCount
Az lpPolyCounts tömbben lévő egész számok teljes számát adja meg.

nPolyFillMode
A sokszög kitöltési módot adja meg. Ez az érték LEHET ALTERNATÍV vagy TEKERCSELÉS.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

Az eredményként kapott régiót az CRgn objektum tárolja.

A sokszögek különállóak lehetnek, vagy átfedésben lehetnek.

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha a sokszögkitöltési mód ALTERNATÍV, a rendszer kitölti a páratlan számú és a páros számú sokszög oldala közötti területet az egyes vizsgálati vonalakon. Vagyis a rendszer kitölti az első és a második oldal, a harmadik és a negyedik oldal közötti területet, és így tovább.

Ha a sokszög-kitöltési mód TEKERCSELÉS, a rendszer az ábra megrajzolásának irányát használja annak meghatározására, hogy kitölt-e egy területet. A sokszögben lévő egyes vonalszakaszok az óramutató járásával megegyező vagy az óramutató járásával ellentétes irányban lesznek rajzolva. Amikor egy képzetes vonal egy zárt területről egy ábra külső felé halad át az óramutató járásával megegyező irányban, a szám növekszik. Ha a vonal az óramutató járásával ellentétes vonalszakaszon halad át, a szám csökken. A terület akkor van kitöltve, ha a szám nem nulla, amikor a vonal eléri az ábra külső részét.

Ha egy alkalmazás befejezte a CreatePolyPolygonRgn függvényrel létrehozott régió használatát, ki kell választania a régiót az eszközkörnyezetből, és a CGDIObject::D eleteObject tagfüggvény használatával kell eltávolítania.

CRgn::CreateRectRgn

Létrehoz egy téglalap alakú régiót, amely az CRgn objektumban van tárolva.

BOOL CreateRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

Paraméterek

x1
A régió bal felső sarkának logikai x koordinátáját adja meg.

y1
A régió bal felső sarkának logikai y koordinátáját adja meg.

x2
A régió jobb alsó sarkának logikai x koordinátáját adja meg.

y2
A régió jobb alsó sarkának logikai y koordinátáját adja meg.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha befejezte a létrehozott CreateRectRgnrégió használatát, az alkalmazásnak a CGDIObject::D eleteObject tagfüggvényt kell használnia a régió eltávolításához.

példa

CRgn   rgn;

BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);

További példa: CRgn::CombineRgn.

CRgn::CreateRectRgnIndirect

Létrehoz egy téglalap alakú régiót, amely az CRgn objektumban van tárolva.

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Paraméterek

lpRect
Olyan struktúrára vagy RECT objektumra CRect mutat, amely a régió bal felső és jobb alsó sarkának logikai koordinátáit tartalmazza. A RECT struktúra formája a következő:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha befejezte a létrehozott CreateRectRgnIndirectrégió használatát, az alkalmazásnak a CGDIObject::D eleteObject tagfüggvényt kell használnia a régió eltávolításához.

példa

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

Az objektumban CRgn tárolt lekerekített sarkokkal rendelkező téglalap alakú régiót hoz létre.

BOOL CreateRoundRectRgn(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

Paraméterek

x1
A régió bal felső sarkának logikai x koordinátáját adja meg.

y1
A régió bal felső sarkának logikai y koordinátáját adja meg.

x2
A régió jobb alsó sarkának logikai x koordinátáját adja meg.

y2
A régió jobb alsó sarkának logikai y koordinátáját adja meg.

x3
A lekerekített sarkok létrehozásához használt három pont szélességét adja meg.

y3
A lekerekített sarkok létrehozásához használt három pont magasságát adja meg.

Visszaadott érték

Nemzero, ha a művelet sikeres volt; egyéb esetben 0.

Megjegyzések

Egy régió mérete 32 767 logikai egységre vagy 64K memóriára korlátozódik, attól függően, hogy melyik kisebb.

Ha egy alkalmazás befejezte a CreateRoundRectRgn függvényrel létrehozott régió használatát, ki kell választania a régiót az eszközkörnyezetből, és a CGDIObject::D eleteObject tagfüggvény használatával kell eltávolítania.

példa

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

Egy CRgn objektumot hoz létre.

CRgn();

Megjegyzések

Az m_hObject adattag nem tartalmaz érvényes Windows GDI-régiót, amíg az objektum inicializálódik egy vagy több tagfüggvénysel CRgn .

példa

Lásd a CRgn::CreateRoundRectRgn példát.

CRgn::EqualRgn

Meghatározza, hogy az adott régió egyenértékű-e az CRgn objektumban tárolt régióval.

BOOL EqualRgn(CRgn* pRgn) const;

Paraméterek

pRgn
Azonosít egy régiót.

Visszaadott érték

Nonzero, ha a két régió egyenértékű; egyéb esetben 0.

példa

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

Egy objektumra mutató CRgn mutatót ad vissza, ha egy Windows-régiónak adott fogót.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Paraméterek

hRgn
Egy Windows-régióhoz megadott leírót ad meg.

Visszaadott érték

Egy objektumra mutató CRgn mutató. Ha a függvény nem volt sikeres, a visszatérési érték NULL.

Megjegyzések

Ha egy CRgn objektum még nincs csatolva a leíróhoz, egy ideiglenes CRgn objektum jön létre és csatolva. Ez az ideiglenes CRgn objektum csak addig érvényes, amíg az alkalmazás következő alkalommal nem rendelkezik tétlenségi idővel az eseményhurkában, és ekkor az összes ideiglenes grafikus objektum törlődik. Ennek másik módja, hogy az ideiglenes objektum csak egy ablaküzenet feldolgozása során érvényes.

CRgn::GetRegionData

Kitölti a megadott puffert a régiót leíró adatokkal.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Paraméterek

lpRgnData
Az adatokat fogadó RGNDATA-adatstruktúrára mutat. Ha ez a paraméter NULL, a visszatérési érték a régióadatokhoz szükséges bájtok számát tartalmazza.

nCount
Az lpRgnData puffer méretét adja meg bájtban.

Visszaadott érték

Ha a függvény sikeres, és az nCount megfelelő számú bájtot ad meg, a visszatérési érték mindig nCount. Ha a függvény sikertelen, vagy ha az nCount a megfelelő bájtszámnál kevesebbet ad meg, a visszatérési érték 0 (hiba).

Megjegyzések

Ezek az adatok tartalmazzák a régiót alkotó téglalapok méreteit. Ez a függvény a függvénnyel CRgn::CreateFromData együtt használatos.

CRgn::GetRgnBox

Lekéri az objektum határoló téglalapjának koordinátáit CRgn .

int GetRgnBox(LPRECT lpRect) const;

Paraméterek

lpRect
Egy szerkezetre RECT vagy CRect objektumra mutat a határoló téglalap koordinátáinak fogadásához. A RECT struktúra formája a következő:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

Visszaadott érték

Megadja a régió típusát. A következő értékek bármelyike lehet:

  • A COMPLEXREGION régió szegélye átfedésben van.

  • A NULLREGION régió üres.

  • AZ ERROR CRgn objektum nem ad meg érvényes régiót.

  • A SIMPLEREGION régiónak nincsenek átfedésben lévő szegélyek.

példa

Lásd a CRgn::CreatePolygonRgn példát.

CRgn::OffsetRgn

Áthelyezi az objektumban CRgn tárolt régiót a megadott eltolásokkal.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Paraméterek

x
A balra vagy jobbra mozgatni kívánt egységek számát adja meg.

y
A felfelé vagy lefelé mozgatni kívánt egységek számát adja meg.

pont
A pont x koordinátája határozza meg a balra vagy jobbra mozgatni kívánt egységek számát. A pont y koordinátája határozza meg a felfelé vagy lefelé mozgatni kívánt egységek számát. A pontparaméter lehet struktúra POINT vagy CPoint objektum.

Visszaadott érték

Az új régió típusa. Az alábbi értékek bármelyike lehet:

  • A COMPLEXREGION régió szegélye átfedésben van.

  • Az HIBArégió leírója érvénytelen.

  • A NULLREGION régió üres.

  • A SIMPLEREGION régiónak nincsenek átfedésben lévő szegélyek.

Megjegyzések

A függvény az x régióegységeket az x tengely és az y egység mentén mozgatja az y tengely mentén.

Egy régió koordináta-értékeinek 32 767-nél kisebbnek vagy egyenlőnek kell lenniük, és -32 768-nál nagyobbnak vagy egyenlőnek kell lenniük. Az x és az y paramétereket gondosan kell kiválasztani az érvénytelen régiókoordináták elkerülése érdekében.

példa

Lásd a CRgn::CreateEllipticRgn példát.

CRgn::operátor HRGN

Ezzel az operátorral lekérheti az objektum csatolt Windows GDI-leíróját CRgn .

operator HRGN() const;

Visszaadott érték

Ha sikeres, az objektum által CRgn képviselt Windows GDI-objektum leírója, ellenkező esetben NULL.

Megjegyzések

Ez az operátor egy öntvény operátor, amely támogatja a HRGN-objektumok közvetlen használatát.

A grafikus objektumok használatáról további információt a Grafikus objektumok a Windows SDK-ban című cikkben talál.

CRgn::P tInRegion

Ellenőrzi, hogy az x és az y által megadott pont az objektumban tárolt régióban CRgn van-e.

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Paraméterek

x
A tesztelni kívánt pont logikai x koordinátáját adja meg.

y
A tesztelni kívánt pont logikai y koordinátáját adja meg.

pont
A pont x és y koordinátái határozzák meg a pont x- és y koordinátáit a pont értékének teszteléséhez. A pontparaméter lehet struktúra POINT vagy CPoint objektum.

Visszaadott érték

Nonzero, ha a pont a régióban van; egyéb esetben 0.

CRgn::RectInRegion

Meghatározza, hogy az lpRect által megadott téglalap bármely része az objektumban CRgn tárolt régió határain belül van-e.

BOOL RectInRegion(LPCRECT lpRect) const;

Paraméterek

lpRect
Egy szerkezetre vagy RECT objektumra CRect mutat. A RECT struktúra formája a következő:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

Visszaadott érték

Nonzero, ha a megadott téglalap bármely része a régió határain belül található; egyéb esetben 0.

CRgn::SetRectRgn

Téglalap alakú régiót hoz létre.

void SetRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

void SetRectRgn(LPCRECT lpRect);

Paraméterek

x1
A téglalap alakú régió bal felső sarkának x koordinátáját adja meg.

y1
A téglalap alakú régió bal felső sarkának y koordinátáját adja meg.

x2
A téglalap alakú régió jobb alsó sarkának x koordinátáját adja meg.

y2
A téglalap alakú régió jobb alsó sarkának y koordinátáját adja meg.

lpRect
A téglalap alakú régiót adja meg. Lehet egy struktúra vagy objektum mutatója RECTCRect .

Megjegyzések

A CreateRectRgntől eltérően azonban nem foglal le további memóriát a helyi Windows-alkalmazás halomából. Ehelyett az objektumban CRgn tárolt régióhoz lefoglalt területet használja. Ez azt jelenti, hogy az CRgn objektumnak már inicializálva kell lennie egy érvényes Windows-régióval a hívás SetRectRgnelőtt. Az x1, y1, x2 és y2 által megadott pontok határozzák meg a lefoglalt terület minimális méretét.

A tagfüggvény helyett ezt a CreateRectRgn függvényt használva elkerülheti a helyi memóriakezelő hívásait.

Lásd még

CWnd osztály
hierarchiadiagram