Sdílet prostřednictvím


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í CRgnnaleznete v tématu Grafické objekty.

Hierarchie dědičnosti

Objekt CObject

CGdiObject

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é CreateRectRgnpomocí 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é CreateRectRgnIndirectpomocí 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.

Viz také

CWnd – třída
Graf hierarchie