CRgn – třída
Zapouzdřuje oblast rozhraní grafického zařízení (GDI) systému Windows.
Syntaxe
class CRgn : public CGdiObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CRgn::CRgn | CRgn Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CRgn::CombineRgn | CRgn Nastaví objekt tak, aby byl ekvivalentní sjednocení dvou zadaných CRgn objektů. |
CRgn::CopyRgn | CRgn Nastaví objekt tak, aby se jedná o kopii zadaného CRgn objektu. |
CRgn::CreateEllipticRgn | Inicializuje CRgn objekt s eliptickou oblastí. |
CRgn::CreateEllipticRgnIndirect | Inicializuje CRgn objekt s eliptickou oblastí definovanou strukturou RECT . |
CRgn::CreateFromData | Vytvoří oblast z dané oblasti a transformační data. |
CRgn::CreateFromPath | Vytvoří oblast z cesty, která je vybrána do daného kontextu zařízení. |
CRgn::CreatePolygonRgn | Inicializuje CRgn objekt s mnohoúhelníkovou oblastí. Systém v případě potřeby automaticky zavře mnohoúhelník tak, že nakreslí čáru z posledního vrcholu na první. |
CRgn::CreatePolyPolygonRgn | Inicializuje CRgn objekt s oblastí skládající se z řady uzavřených mnohoúhelníků. Mnohoúhelníky můžou být oddělené nebo se mohou překrývat. |
CRgn::CreateRectRgn | Inicializuje CRgn objekt s obdélníkovou oblastí. |
CRgn::CreateRectRgnIndirect | Inicializuje CRgn objekt s obdélníkovou oblastí definovanou tructure RECT. |
CRgn::CreateRoundRectRgn | Inicializuje CRgn objekt s obdélníkovou oblastí se zaoblenými rohy. |
CRgn::EqualRgn | Zkontroluje dva CRgn objekty a určí, jestli jsou ekvivalentní. |
CRgn::FromHandle | Vrátí ukazatel na CRgn objekt při zadání úchytu do oblasti Windows. |
CRgn::GetRegionData | Vyplní zadanou vyrovnávací paměť daty popisující danou oblast. |
CRgn::GetRgnBox | Načte souřadnice ohraničujícího obdélníku objektu CRgn . |
CRgn::OffsetRgn | Přesune CRgn objekt o zadané posuny. |
CRgn::P tInRegion | Určuje, zda je zadaný bod v oblasti. |
CRgn::RectInRegion | Určuje, zda je některá část zadaného obdélníku v rámci hranic oblasti. |
CRgn::SetRectRgn | CRgn Nastaví objekt na zadanou obdélníkovou oblast. |
Veřejné operátory
Název | Popis |
---|---|
CRgn::operator HRGN | Vrátí popisovač Systému Windows obsažený v objektu CRgn . |
Poznámky
Oblast je elipsa nebo polygonální oblast v okně. Chcete-li použít oblasti, použijete členské funkce třídy CRgn
s ořezávající funkce definované jako členy třídy CDC
.
Členské funkce CRgn
vytvoření, změny a načtení informací o objektu oblasti, pro který jsou volány.
Další informace o použití CRgn
naleznete v tématu Grafické objekty.
Hierarchie dědičnosti
CRgn
Požadavky
Hlavička: afxwin.h
CRgn::CombineRgn
Vytvoří novou oblast GDI zkombinováním dvou existujících oblastí.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode);
Parametry
pRgn1
Identifikuje existující oblast.
pRgn2
Identifikuje existující oblast.
nCombineMode
Určuje operaci, která se má provést při kombinování dvou zdrojových oblastí. Může to být libovolná z následujících hodnot:
RGN_AND Používá překrývající se oblasti obou oblastí (průnik).
RGN_COPY Vytvoří kopii oblasti 1 (identifikovanou pRgn1).
RGN_DIFF Vytvoří oblast skládající se z oblastí oblasti 1 (identifikované pRgn1), které nejsou součástí oblasti 2 (identifikované pRgn2).
RGN_OR kombinuje obě oblasti v celém rozsahu (sjednocení).
RGN_XOR Kombinuje obě oblasti, ale odstraňuje překrývající se oblasti.
Návratová hodnota
Určuje typ výsledné oblasti. Může to být jedna z následujících hodnot:
Nová oblast COMPLEXREGION má překrývající se ohraničení.
CHYBA Nevytvořila se žádná nová oblast.
Nová oblast NULLREGION je prázdná.
Nová oblast SIMPLEREGION neobsahuje překrývající se ohraničení.
Poznámky
Oblasti jsou kombinovány podle nCombineMode.
Dvě zadané oblasti jsou sloučeny a výsledný popisovač oblasti je uložen v objektu CRgn
. Proto se libovolná oblast uložená v objektu CRgn
nahradí kombinovanou oblastí.
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Pomocí copyRgn jednoduše zkopírujte jednu oblast do jiné oblasti.
Příklad
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
Zkopíruje oblast definovanou pRgnSrc do objektuCRgn
.
int CopyRgn(CRgn* pRgnSrc);
Parametry
pRgnSrc
Identifikuje existující oblast.
Návratová hodnota
Určuje typ výsledné oblasti. Může to být jedna z následujících hodnot:
Nová oblast COMPLEXREGION má překrývající se ohraničení.
CHYBA Nevytvořila se žádná nová oblast.
Nová oblast NULLREGION je prázdná.
Nová oblast SIMPLEREGION neobsahuje překrývající se ohraničení.
Poznámky
Nová oblast nahrazuje oblast dříve uloženou v objektu CRgn
. Tato funkce je zvláštním případem členské funkce CombineRgn .
Příklad
Podívejte se na příklad pro CRgn::CreateEllipticRgn.
CRgn::CreateEllipticRgn
Vytvoří eliptickou oblast.
BOOL CreateEllipticRgn(
int x1,
int y1,
int x2,
int y2);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu ohraničujícího obdélníku se třemi tečkou.
y1
Určuje logickou souřadnici y levého horního rohu ohraničujícího obdélníku se třemi tečky.
x2
Určuje logickou souřadnici x pravého dolního rohu ohraničujícího obdélníku se třemi tečky.
y2
Určuje logickou souřadnici y pravého dolního rohu ohraničujícího obdélníku se třemi tečky.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Oblast je definována ohraničující obdélník určený x1, y1, x2 a y2. Oblast je uložena v objektu CRgn
.
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Po dokončení použití oblasti vytvořené s CreateEllipticRgn
funkcí by aplikace měla vybrat oblast mimo kontext zařízení a pomocí DeleteObject
funkce ji odebrat.
Příklad
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
Vytvoří eliptickou oblast.
BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje logické souřadnice levého horního a pravého dolního rohu ohraničujícího obdélníku se třemi tečkami.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Oblast je definována strukturou nebo objektem, na který odkazuje lpRect a je uložen v objektu CRgn
.
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Po dokončení použití oblasti vytvořené s CreateEllipticRgnIndirect
funkcí by aplikace měla vybrat oblast mimo kontext zařízení a pomocí DeleteObject
funkce ji odebrat.
Příklad
Podívejte se na příklad pro CRgn::CreateRectRgnIndirect.
CRgn::CreateFromData
Vytvoří oblast z dané oblasti a transformační data.
BOOL CreateFromData(
const XFORM* lpXForm,
int nCount,
const RGNDATA* pRgnData);
Parametry
Formát lpX
Odkazuje na strukturu XFORMata, která definuje transformaci, která se má provést v dané oblasti. Pokud je tento ukazatel NULL, použije se transformace identity.
nCount
Určuje počet bajtů, na které odkazuje pRgnData.
pRgnData
Odkazuje na datovou strukturu RGNDATA , která obsahuje data oblasti.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Aplikace může načíst data pro oblast voláním CRgn::GetRegionData
funkce.
CRgn::CreateFromPath
Vytvoří oblast z cesty, která je vybrána do daného kontextu zařízení.
BOOL CreateFromPath(CDC* pDC);
Parametry
pDC
Identifikuje kontext zařízení, který obsahuje uzavřenou cestu.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Kontext zařízení identifikovaný parametrem pDC musí obsahovat uzavřenou cestu. Po CreateFromPath
převodu cesty do oblasti systém Windows zahodí uzavřenou cestu z kontextu zařízení.
CRgn::CreatePolygonRgn
Vytvoří mnohoúhelníkovou oblast.
BOOL CreatePolygonRgn(
LPPOINT lpPoints,
int nCount,
int nMode);
Parametry
lpPoints
Odkazuje na pole POINT
struktur nebo pole CPoint
objektů. Každá struktura určuje souřadnici x a souřadnici y jednoho vrcholu mnohoúhelníku. Struktura POINT
má následující tvar:
typedef struct tagPOINT {
int x;
int y;
} POINT;
nCount
Určuje počet POINT
struktur nebo CPoint
objektů v matici odkazované na lpPoints.
nMode
Určuje režim vyplňování oblasti. Tento parametr může být alternativní nebo vinutí.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Systém v případě potřeby automaticky zavře mnohoúhelník tak, že nakreslí čáru z posledního vrcholu na první. Výsledná oblast je uložena v objektu CRgn
.
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Pokud je režim mnohoúhelníku ALTERNATIVNÍ, systém vyplní oblast mezi lichými a sudými čísly po stranách mnohoúhelníku na každé čáře skenování. To znamená, že systém vyplní oblast mezi první a druhou stranou, mezi třetí a čtvrtou stranou atd.
Když je polygonový režim vinutí, systém používá směr, ve kterém byl obrázek nakreslen k určení, zda se má vyplnit oblast. Každý segment čáry v mnohoúhelníku je nakreslen ve směru hodinových ručiček nebo proti směru hodinových ručiček. Vždy, když imaginární čára vytažená z uzavřené oblasti na vnější část obrázku prochází segmentem ručiček po směru hodinových ručiček, zvýší se počet. Když čára prochází segmentem čáry proti směru hodinových ručiček, je počet dekrementován. Oblast se vyplní, pokud je počet nenulový, když čára dosáhne vnější části obrázku.
Jakmile aplikace dokončí použití oblasti vytvořené s CreatePolygonRgn
funkcí, měla by vybrat oblast mimo kontext zařízení a pomocí DeleteObject
funkce ji odebrat.
Příklad
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
Vytvoří oblast skládající se z řady uzavřených mnohoúhelníků.
BOOL CreatePolyPolygonRgn(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount,
int nPolyFillMode);
Parametry
lpPoints
Odkazuje na pole POINT
struktur nebo pole CPoint
objektů, které definují vrcholy mnohoúhelníku. Každý mnohoúhelník musí být explicitně uzavřen, protože systém je automaticky nezavře. Mnohoúhelníky jsou zadány po sobě. Struktura POINT
má následující tvar:
typedef struct tagPOINT {
int x;
int y;
} POINT;
lpPolyCounts
Odkazuje na pole celých čísel. První celé číslo určuje počet vrcholů v prvním mnohoúhelníku v matici lpPoints , druhé celé číslo určuje počet vrcholů ve druhém mnohoúhelníku atd.
nCount
Určuje celkový počet celých čísel v poli lpPolyCounts .
nPolyFillMode
Určuje režim mnohoúhelníku. Tato hodnota může být alternativní nebo vinutí.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Výsledná oblast je uložena v objektu CRgn
.
Mnohoúhelníky můžou být oddělené nebo se mohou překrývat.
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Pokud je režim mnohoúhelníku ALTERNATIVNÍ, systém vyplní oblast mezi lichými a sudými čísly po stranách mnohoúhelníku na každé čáře skenování. To znamená, že systém vyplní oblast mezi první a druhou stranou, mezi třetí a čtvrtou stranou atd.
Když je polygonový režim vinutí, systém používá směr, ve kterém byl obrázek nakreslen k určení, zda se má vyplnit oblast. Každý segment čáry v mnohoúhelníku je nakreslen ve směru hodinových ručiček nebo proti směru hodinových ručiček. Vždy, když imaginární čára vytažená z uzavřené oblasti na vnější část obrázku prochází segmentem ručiček po směru hodinových ručiček, zvýší se počet. Když čára prochází segmentem čáry proti směru hodinových ručiček, je počet dekrementován. Oblast se vyplní, pokud je počet nenulový, když čára dosáhne vnější části obrázku.
Jakmile aplikace dokončí použití oblasti vytvořené s CreatePolyPolygonRgn
funkcí, měla by vybrat oblast mimo kontext zařízení a odebrat ji pomocí členské funkce CGDIObject::D eleteObject .
CRgn::CreateRectRgn
Vytvoří obdélníkovou oblast uloženou v objektu CRgn
.
BOOL CreateRectRgn(
int x1,
int y1,
int x2,
int y2);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu oblasti.
y1
Určuje logickou souřadnici y levého horního rohu oblasti.
x2
Určuje logickou souřadnici x pravého dolního rohu oblasti.
y2
Určuje logickou souřadnici y v pravém dolním rohu oblasti.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Po dokončení použití oblasti vytvořené CreateRectRgn
pomocí aplikace by měla k odebrání oblasti použít CGDIObject::D eleteObject členské funkce.
Příklad
CRgn rgn;
BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);
Další příklad najdete v tématu CRgn::CombineRgn.
CRgn::CreateRectRgnIndirect
Vytvoří obdélníkovou oblast uloženou v objektu CRgn
.
BOOL CreateRectRgnIndirect(LPCRECT lpRect);
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje logické souřadnice levého horního a pravého dolního rohu oblasti. Struktura RECT
má následující tvar:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Po dokončení použití oblasti vytvořené CreateRectRgnIndirect
pomocí aplikace by měla k odebrání oblasti použít CGDIObject::D eleteObject členské funkce.
Příklad
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
Vytvoří obdélníkovou oblast se zaoblenými rohy uloženými v objektu CRgn
.
BOOL CreateRoundRectRgn(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu oblasti.
y1
Určuje logickou souřadnici y levého horního rohu oblasti.
x2
Určuje logickou souřadnici x pravého dolního rohu oblasti.
y2
Určuje logickou souřadnici y v pravém dolním rohu oblasti.
x3
Určuje šířku tří teček použitých k vytvoření zaoblených rohů.
y3
Určuje výšku tří teček použitých k vytvoření zaoblených rohů.
Návratová hodnota
Nenulové, pokud operace proběhla úspěšně; jinak 0.
Poznámky
Velikost oblasti je omezená na 32 767 na 32 767 logických jednotek nebo 64 tisíc paměti podle toho, co je menší.
Jakmile aplikace dokončí použití oblasti vytvořené s CreateRoundRectRgn
funkcí, měla by vybrat oblast mimo kontext zařízení a odebrat ji pomocí členské funkce CGDIObject::D eleteObject .
Příklad
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
CRgn
Vytvoří objekt.
CRgn();
Poznámky
Datový m_hObject
člen neobsahuje platnou oblast GDI systému Windows, dokud se objekt inicializuje s jednou nebo více dalšími CRgn
členskými funkcemi.
Příklad
Podívejte se na příklad pro CRgn::CreateRoundRectRgn.
CRgn::EqualRgn
Určuje, zda daná oblast odpovídá oblasti uložené v objektu CRgn
.
BOOL EqualRgn(CRgn* pRgn) const;
Parametry
pRgn
Identifikuje oblast.
Návratová hodnota
Nenulové, pokud jsou obě oblasti ekvivalentní; jinak 0.
Příklad
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
Vrátí ukazatel na CRgn
objekt při zadání úchytu do oblasti Windows.
static CRgn* PASCAL FromHandle(HRGN hRgn);
Parametry
hRgn
Určuje popisovač oblasti Windows.
Návratová hodnota
Ukazatel na CRgn
objekt. Pokud funkce nebyla úspěšná, je vrácená hodnota NULL.
Poznámky
CRgn
Pokud objekt ještě není připojený k popisovači, vytvoří se dočasný CRgn
objekt a připojí se. Tento dočasný CRgn
objekt je platný pouze do okamžiku, kdy aplikace ve smyčce událostí nečiní, kdy se odstraní všechny dočasné grafické objekty. Dalším způsobem, jak to říct, je, že dočasný objekt je platný pouze během zpracování jedné zprávy okna.
CRgn::GetRegionData
Vyplní zadanou vyrovnávací paměť daty popisující oblast.
int GetRegionData(
LPRGNDATA lpRgnData,
int nCount) const;
Parametry
lpRgnData
Odkazuje na datovou strukturu RGNDATA , která přijímá informace. Pokud je tento parametr NULL, návratová hodnota obsahuje počet bajtů potřebných pro data oblasti.
nCount
Určuje velikost vyrovnávací paměti lpRgnData v bajtech.
Návratová hodnota
Pokud je funkce úspěšná a nCount určuje odpovídající počet bajtů, návratová hodnota je vždy nCount. Pokud funkce selže nebo pokud nCount určuje menší než odpovídající počet bajtů, vrátí hodnota 0 (chyba).
Poznámky
Tato data zahrnují rozměry obdélníků, které tvoří oblast. Tato funkce se používá ve spojení s CRgn::CreateFromData
funkcí.
CRgn::GetRgnBox
Načte souřadnice ohraničujícího obdélníku objektu CRgn
.
int GetRgnBox(LPRECT lpRect) const;
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, aby získal souřadnice ohraničujícího obdélníku. Struktura RECT
má následující tvar:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Návratová hodnota
Určuje typ oblasti. Může to být libovolná z následujících hodnot:
Oblast COMPLEXREGION má překrývající se ohraničení.
Oblast NULLREGION je prázdná.
Objekt ERROR
CRgn
nezadává platnou oblast.Oblast SIMPLEREGION nemá žádná překrývající se ohraničení.
Příklad
Podívejte se na příklad pro CRgn::CreatePolygonRgn.
CRgn::OffsetRgn
Přesune oblast uloženou v objektu CRgn
podle zadaných posunů.
int OffsetRgn(
int x,
int y);
int OffsetRgn(POINT point);
Parametry
x
Určuje počet jednotek, které se mají přesunout doleva nebo doprava.
y
Určuje počet jednotek, které se mají přesunout nahoru nebo dolů.
bod
Souřadnice x bodu určuje počet jednotek, které se mají přesunout doleva nebo doprava. Souřadnice y bodu určuje počet jednotek, které se mají přesunout nahoru nebo dolů. Parametr bodu může být POINT
struktura nebo CPoint
objekt.
Návratová hodnota
Typ nové oblasti. Může to být libovolná z následujících hodnot:
Oblast COMPLEXREGION má překrývající se ohraničení.
Popisovač oblasti CHYBY není platný.
Oblast NULLREGION je prázdná.
Oblast SIMPLEREGION nemá žádná překrývající se ohraničení.
Poznámky
Funkce přesune jednotky x oblasti podél osy x a y podél osy y.
Hodnoty souřadnic oblasti musí být menší nebo rovny 32 767 a větší než nebo rovno -32 768. Parametry x a y musí být pečlivě zvoleny , aby se zabránilo neplatným souřadnicům oblasti.
Příklad
Podívejte se na příklad pro CRgn::CreateEllipticRgn.
CRgn::operator HRGN
Pomocí tohoto operátoru získáte připojený popisovač GDI windows objektu CRgn
.
operator HRGN() const;
Návratová hodnota
V případě úspěchu je popisovač objektu GDI systému Windows reprezentovaný objektem CRgn
, jinak NULL.
Poznámky
Tento operátor je operátor přetypování, který podporuje přímé použití objektu HRGN.
Další informace o používání grafických objektů naleznete v článku Grafické objekty v sadě Windows SDK.
CRgn::P tInRegion
Zkontroluje, jestli je bod zadaný x a y v oblasti uložené v objektu CRgn
.
BOOL PtInRegion(
int x,
int y) const;
BOOL PtInRegion(POINT point) const;
Parametry
x
Určuje logickou souřadnici x bodu, který se má testovat.
y
Určuje logickou souřadnici y bodu, který se má testovat.
bod
Souřadnice x a y bodu určují souřadnice x a y bodu k otestování hodnoty. Parametr bodu může být POINT
buď struktura, nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je bod v oblasti; jinak 0.
CRgn::RectInRegion
Určuje, zda jakákoli část obdélníku určená lpRect je v rámci hranic oblasti uložené v objektu CRgn
.
BOOL RectInRegion(LPCRECT lpRect) const;
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt. Struktura RECT
má následující tvar:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Návratová hodnota
Nenulové, pokud jakákoli část zadaného obdélníku leží v hranicích oblasti; jinak 0.
CRgn::SetRectRgn
Vytvoří obdélníkovou oblast.
void SetRectRgn(
int x1,
int y1,
int x2,
int y2);
void SetRectRgn(LPCRECT lpRect);
Parametry
x1
Určuje souřadnici x levého horního rohu obdélníkové oblasti.
y1
Určuje souřadnici y levého horního rohu obdélníkové oblasti.
x2
Určuje souřadnici x pravého dolního rohu obdélníkové oblasti.
y2
Určuje souřadnici y pravého dolního rohu obdélníkové oblasti.
lpRect
Určuje obdélníkovou oblast. Může to být ukazatel na RECT
strukturu nebo CRect
objekt.
Poznámky
Na rozdíl od createRectRgn však nepřiděluje žádnou další paměť z místní haldy aplikace systému Windows. Místo toho používá prostor přidělený pro oblast uloženou v objektu CRgn
. To znamená, že objekt již musí být inicializován s platnou CRgn
oblastí Systému Windows před voláním SetRectRgn
. Body zadané x1, y1, x2 a y2 určují minimální velikost přiděleného prostoru.
Tuto funkci použijte místo CreateRectRgn
členské funkce, abyste se vyhnuli volání místního správce paměti.