Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
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
CRgnobjektum 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.