Klasa CRgn
Hermetyzuje region interfejsu urządzenia graficznego systemu Windows (GDI).
Składnia
class CRgn : public CGdiObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CRgn::CRgn | CRgn Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CRgn::CombineRgn | CRgn Ustawia obiekt tak, aby był odpowiednikiem unii dwóch określonych CRgn obiektów. |
CRgn::CopyRgn | CRgn Ustawia obiekt tak, aby był kopią określonego CRgn obiektu. |
CRgn::CreateEllipticRgn | Inicjuje CRgn obiekt z wielokropkiem. |
CRgn::CreateEllipticRgnIndirect | Inicjuje CRgn obiekt z wielokropkiem zdefiniowanym przez strukturę RECT . |
CRgn::CreateFromData | Tworzy region na podstawie danego regionu i danych przekształcania. |
CRgn::CreateFromPath | Tworzy region ze ścieżki wybranej do danego kontekstu urządzenia. |
CRgn::CreatePolygonRgn | Inicjuje CRgn obiekt z regionem wielokątnym. System zamyka wielokąt automatycznie, w razie potrzeby, rysując linię z ostatniego wierzchołka do pierwszego. |
CRgn::CreatePolyPolygonRgn | Inicjuje CRgn obiekt z regionem składającym się z serii zamkniętych wielokątów. Wielokąty mogą być rozłączne lub nakładają się na siebie. |
CRgn::CreateRectRgn | Inicjuje CRgn obiekt z prostokątnym regionem. |
CRgn::CreateRectRgnIndirect | Inicjuje CRgn obiekt z prostokątnym regionem zdefiniowanym przez obcięcie RECT. |
CRgn::CreateRoundRectRgn | Inicjuje CRgn obiekt z prostokątnym regionem z zaokrąglonymi rogami. |
CRgn::EqualRgn | Sprawdza dwa CRgn obiekty, aby określić, czy są równoważne. |
CRgn::FromHandle | Zwraca wskaźnik do CRgn obiektu, gdy dana dojście do regionu systemu Windows. |
CRgn::GetRegionData | Wypełnia określony bufor danymi opisującym dany region. |
CRgn::GetRgnBox | Pobiera współrzędne prostokąta CRgn ograniczenia obiektu. |
CRgn::OffsetRgn | CRgn Przenosi obiekt o określone przesunięcia. |
CRgn::P tInRegion | Określa, czy określony punkt znajduje się w regionie. |
CRgn::RectInRegion | Określa, czy jakakolwiek część określonego prostokąta znajduje się w granicach regionu. |
CRgn::SetRectRgn | CRgn Ustawia obiekt na określony prostokątny region. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CRgn::operator HRGN | Zwraca uchwyt systemu Windows zawarty CRgn w obiekcie . |
Uwagi
Region to wielokropek lub wielokątny obszar w oknie. Aby użyć regionów, należy użyć funkcji składowych klasy CRgn
z funkcjami przycinania zdefiniowanymi jako składowe klasy CDC
.
Funkcje składowe CRgn
tworzenia, modyfikowania i pobierania informacji o obiekcie regionu, dla którego są wywoływane.
Aby uzyskać więcej informacji na temat korzystania z programu CRgn
, zobacz Obiekty graficzne.
Hierarchia dziedziczenia
CRgn
Wymagania
Nagłówek: afxwin.h
CRgn::CombineRgn
Tworzy nowy region GDI, łącząc dwa istniejące regiony.
int CombineRgn(
CRgn* pRgn1,
CRgn* pRgn2,
int nCombineMode);
Parametry
pRgn1
Identyfikuje istniejący region.
pRgn2
Identyfikuje istniejący region.
nCombineMode
Określa operację do wykonania podczas łączenia dwóch regionów źródłowych. Może to być dowolna z następujących wartości:
RGN_AND Używa nakładających się obszarów obu regionów (skrzyżowanie).
RGN_COPY Tworzy kopię regionu 1 (zidentyfikowaną przez pRgn1).
RGN_DIFF Tworzy region składający się z obszarów regionu 1 (zidentyfikowanego przez pRgn1), który nie jest częścią regionu 2 (zidentyfikowanego przez pRgn2).
RGN_OR łączy oba regiony w całości (unii).
RGN_XOR Łączy oba regiony, ale usuwa nakładające się obszary.
Wartość zwracana
Określa typ wynikowego regionu. Może to być jedna z następujących wartości:
COMPLEXREGION Nowy region ma nakładające się granice.
BŁĄD Nie utworzono nowego regionu.
Region NULLREGION Nowy jest pusty.
SIMPLEREGION Nowy region nie ma nakładających się obramowań.
Uwagi
Regiony są łączone zgodnie z parametrem nCombineMode.
Dwa określone regiony są łączone, a wynikowy uchwyt regionu jest przechowywany w CRgn
obiekcie. W związku z tym każdy region przechowywany w CRgn
obiekcie jest zastępowany przez połączony region.
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Użyj metody CopyRgn , aby po prostu skopiować jeden region do innego regionu.
Przykład
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
Kopiuje region zdefiniowany przez element pRgnSrc do CRgn
obiektu .
int CopyRgn(CRgn* pRgnSrc);
Parametry
pRgnSrc
Identyfikuje istniejący region.
Wartość zwracana
Określa typ wynikowego regionu. Może to być jedna z następujących wartości:
COMPLEXREGION Nowy region ma nakładające się granice.
BŁĄD Nie utworzono nowego regionu.
Region NULLREGION Nowy jest pusty.
SIMPLEREGION Nowy region nie ma nakładających się obramowań.
Uwagi
Nowy region zastępuje region wcześniej przechowywany w CRgn
obiekcie. Ta funkcja jest specjalnym przypadkiem funkcji składowej CombineRgn .
Przykład
Zobacz przykład CRgn ::CreateEllipticRgn.
CRgn::CreateEllipticRgn
Tworzy wielokropekowy region.
BOOL CreateEllipticRgn(
int x1,
int y1,
int x2,
int y2);
Parametry
x1
Określa logiczną współrzędną x lewego górnego rogu prostokąta ograniczenia wielokropka.
y1
Określa współrzędną logiczną y lewego górnego rogu prostokąta ograniczenia wielokropka.
x2
Określa współrzędną logiczną x prawego dolnego rogu prostokąta ograniczenia wielokropka.
y2
Określa logiczną współrzędną y prawego dolnego rogu prostokąta ograniczenia wielokropka.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Region jest definiowany przez prostokąt ograniczenia określony przez x1, y1, x2 i y2. Region jest przechowywany w CRgn
obiekcie .
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Po zakończeniu korzystania z regionu utworzonego CreateEllipticRgn
za pomocą funkcji aplikacja powinna wybrać region poza kontekstem urządzenia i użyć DeleteObject
funkcji , aby ją usunąć.
Przykład
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
Tworzy wielokropekowy region.
BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt zawierający współrzędne logiczne lewego górnego i prawego dolnego rogu prostokąta ograniczenia wielokropka.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Region jest definiowany przez strukturę lub obiekt wskazywany przez lpRect i jest przechowywany w CRgn
obiekcie.
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Po zakończeniu korzystania z regionu utworzonego CreateEllipticRgnIndirect
za pomocą funkcji aplikacja powinna wybrać region poza kontekstem urządzenia i użyć DeleteObject
funkcji , aby ją usunąć.
Przykład
Zobacz przykład dla CRgn::CreateRectRgnIndirect.
CRgn::CreateFromData
Tworzy region na podstawie danego regionu i danych przekształcania.
BOOL CreateFromData(
const XFORM* lpXForm,
int nCount,
const RGNDATA* pRgnData);
Parametry
lpXForm
Wskazuje strukturę ata XFORM, która definiuje transformację do wykonania w regionie. Jeśli ten wskaźnik ma wartość NULL, zostanie użyta transformacja tożsamości.
nCount
Określa liczbę bajtów wskazywanych przez element pRgnData.
pRgnData
Wskazuje strukturę danych RGNDATA zawierającą dane regionu.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Aplikacja może pobierać dane dla regionu, wywołując CRgn::GetRegionData
funkcję.
CRgn::CreateFromPath
Tworzy region ze ścieżki wybranej do danego kontekstu urządzenia.
BOOL CreateFromPath(CDC* pDC);
Parametry
PDC
Identyfikuje kontekst urządzenia, który zawiera zamkniętą ścieżkę.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Kontekst urządzenia zidentyfikowany przez parametr pDC musi zawierać zamkniętą ścieżkę. Po CreateFromPath
przekonwertowaniu ścieżki na region system Windows odrzuca zamkniętą ścieżkę z kontekstu urządzenia.
CRgn::CreatePolygonRgn
Tworzy region wielokątny.
BOOL CreatePolygonRgn(
LPPOINT lpPoints,
int nCount,
int nMode);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur lub tablicę CPoint
obiektów. Każda struktura określa współrzędną x i współrzędną y jednego wierzchołka wielokąta. Struktura POINT
ma następującą formę:
typedef struct tagPOINT {
int x;
int y;
} POINT;
nCount
Określa liczbę POINT
struktur lub CPoint
obiektów w tablicy wskazywanej przez lpPoints.
nMode
Określa tryb wypełniania dla regionu. Ten parametr może być ALTERNATYWNY lub UZWOJENIE.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
System zamyka wielokąt automatycznie, w razie potrzeby, rysując linię z ostatniego wierzchołka do pierwszego. Wynikowy region jest przechowywany w CRgn
obiekcie .
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Gdy tryb wypełniania wielokątowego jest ALTERNATYWNY, system wypełnia obszar między nieparzystymi i parzystymi bokami wielokąta na każdej linii skanowania. Oznacza to, że system wypełnia obszar między pierwszą i drugą stroną, między trzecią i czwartą stroną itd.
Gdy tryb wypełniania wielokąta jest uzwojony, system używa kierunku, w którym rysunek został narysowany, aby określić, czy wypełnić obszar. Każdy segment linii w wielokącie jest rysowany w kierunku wskazówek zegara lub w kierunku odwrotnym. Za każdym razem, gdy wyimaginowana linia wyciągnięta z otaczającego obszaru na zewnątrz figury przechodzi przez segment linii zegarowej, liczba jest zwiększana. Gdy linia przechodzi przez segment linii odwrotnej do ruchu wskazówek zegara, liczba jest dekrementowana. Obszar jest wypełniony, jeśli liczba jest niezerowa, gdy linia osiągnie wartość zewnętrzną rysunku.
Po zakończeniu korzystania z regionu utworzonego za CreatePolygonRgn
pomocą funkcji należy wybrać region poza kontekstem urządzenia i użyć DeleteObject
funkcji , aby ją usunąć.
Przykład
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
Tworzy region składający się z serii zamkniętych wielokątów.
BOOL CreatePolyPolygonRgn(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount,
int nPolyFillMode);
Parametry
lpPoints
Wskazuje tablicę struktur lub tablicę POINT
CPoint
obiektów definiujących wierzchołki wielokątów. Każdy wielokąt musi być jawnie zamknięty, ponieważ system nie zamyka ich automatycznie. Wielokąty są określane kolejno. Struktura POINT
ma następującą formę:
typedef struct tagPOINT {
int x;
int y;
} POINT;
lpPolyCounts
Wskazuje tablicę liczb całkowitych. Pierwsza liczba całkowita określa liczbę wierzchołków w pierwszej wielokącie tablicy lpPoints , druga liczba całkowita określa liczbę wierzchołków w drugim wielokącie itd.
nCount
Określa całkowitą liczbę liczb całkowitych w tablicy lpPolyCounts .
nPolyFillMode
Określa tryb wypełniania wielokątowego. Ta wartość może być ALTERNATYWNA lub UZWOJENIE.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wynikowy region jest przechowywany w CRgn
obiekcie .
Wielokąty mogą być rozłączne lub nakładają się na siebie.
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Gdy tryb wypełniania wielokątowego jest ALTERNATYWNY, system wypełnia obszar między nieparzystymi i parzystymi bokami wielokąta na każdej linii skanowania. Oznacza to, że system wypełnia obszar między pierwszą i drugą stroną, między trzecią i czwartą stroną itd.
Gdy tryb wypełniania wielokąta jest uzwojony, system używa kierunku, w którym rysunek został narysowany, aby określić, czy wypełnić obszar. Każdy segment linii w wielokącie jest rysowany w kierunku wskazówek zegara lub w kierunku odwrotnym. Za każdym razem, gdy wyimaginowana linia wyciągnięta z otaczającego obszaru na zewnątrz figury przechodzi przez segment linii zegarowej, liczba jest zwiększana. Gdy linia przechodzi przez segment linii odwrotnej do ruchu wskazówek zegara, liczba jest dekrementowana. Obszar jest wypełniony, jeśli liczba jest niezerowa, gdy linia osiągnie wartość zewnętrzną rysunku.
Po zakończeniu korzystania z regionu utworzonego za CreatePolyPolygonRgn
pomocą funkcji należy wybrać region poza kontekstem urządzenia i użyć funkcji składowej CGDIObject::D eleteObject , aby ją usunąć.
CRgn::CreateRectRgn
Tworzy prostokątny region, który jest przechowywany w CRgn
obiekcie.
BOOL CreateRectRgn(
int x1,
int y1,
int x2,
int y2);
Parametry
x1
Określa logiczną współrzędną x lewego górnego rogu regionu.
y1
Określa współrzędną logiczną w lewym górnym rogu regionu.
x2
Określa logiczną współrzędną x w prawym dolnym rogu regionu.
y2
Określa współrzędną logiczną y w prawym dolnym rogu regionu.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Po zakończeniu korzystania z regionu utworzonego przez CreateRectRgn
program aplikacja powinna użyć funkcji składowej CGDIObject::D eleteObject w celu usunięcia regionu.
Przykład
CRgn rgn;
BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);
Aby uzyskać dodatkowy przykład, zobacz CRgn::CombineRgn.
CRgn::CreateRectRgnIndirect
Tworzy prostokątny region, który jest przechowywany w CRgn
obiekcie.
BOOL CreateRectRgnIndirect(LPCRECT lpRect);
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt zawierający współrzędne logiczne lewego górnego i prawego dolnego rogu regionu. Struktura RECT
ma następującą formę:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Po zakończeniu korzystania z regionu utworzonego przez CreateRectRgnIndirect
program aplikacja powinna użyć funkcji składowej CGDIObject::D eleteObject w celu usunięcia regionu.
Przykład
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
Tworzy prostokątny region z zaokrąglonymi rogami przechowywanymi w CRgn
obiekcie.
BOOL CreateRoundRectRgn(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
Parametry
x1
Określa logiczną współrzędną x lewego górnego rogu regionu.
y1
Określa współrzędną logiczną w lewym górnym rogu regionu.
x2
Określa logiczną współrzędną x w prawym dolnym rogu regionu.
y2
Określa współrzędną logiczną y w prawym dolnym rogu regionu.
x3
Określa szerokość wielokropka używanego do tworzenia zaokrąglonych narożników.
y3
Określa wysokość wielokropka używanego do tworzenia zaokrąglonych narożników.
Wartość zwracana
Nonzero, jeśli operacja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Rozmiar regionu jest ograniczony do 32 767 przez 32 767 jednostek logicznych lub 64K pamięci, w zależności od tego, co jest mniejsze.
Po zakończeniu korzystania z regionu utworzonego za CreateRoundRectRgn
pomocą funkcji należy wybrać region poza kontekstem urządzenia i użyć funkcji składowej CGDIObject::D eleteObject , aby ją usunąć.
Przykład
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
Tworzy obiekt.
CRgn();
Uwagi
Element m_hObject
członkowski danych nie zawiera prawidłowego regionu GDI systemu Windows, dopóki obiekt nie zostanie zainicjowany przy użyciu co najmniej jednej funkcji innej CRgn
składowej.
Przykład
Zobacz przykład CRgn ::CreateRoundRectRgn.
CRgn::EqualRgn
Określa, czy dany region jest odpowiednikiem regionu przechowywanego CRgn
w obiekcie.
BOOL EqualRgn(CRgn* pRgn) const;
Parametry
pRgn
Identyfikuje region.
Wartość zwracana
Niezerowe, jeśli dwa regiony są równoważne; w przeciwnym razie 0.
Przykład
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
Zwraca wskaźnik do CRgn
obiektu, gdy dana dojście do regionu systemu Windows.
static CRgn* PASCAL FromHandle(HRGN hRgn);
Parametry
hRgn
Określa dojście do regionu systemu Windows.
Wartość zwracana
Wskaźnik do CRgn
obiektu. Jeśli funkcja nie powiodła się, zwracana wartość ma wartość NULL.
Uwagi
CRgn
Jeśli obiekt nie jest jeszcze dołączony do uchwytu, zostanie utworzony i dołączony obiekt tymczasowyCRgn
. Ten obiekt tymczasowy CRgn
jest prawidłowy tylko do następnego czasu bezczynności aplikacji w pętli zdarzeń, w którym wszystkie tymczasowe obiekty graficzne są usuwane. Innym sposobem stwierdzenia jest to, że obiekt tymczasowy jest prawidłowy tylko podczas przetwarzania jednego komunikatu okna.
CRgn::GetRegionData
Wypełnia określony bufor danymi opisującym region.
int GetRegionData(
LPRGNDATA lpRgnData,
int nCount) const;
Parametry
lpRgnData
Wskazuje strukturę danych RGNDATA, która odbiera informacje. Jeśli ten parametr ma wartość NULL, zwracana wartość zawiera liczbę bajtów potrzebnych dla danych regionu.
nCount
Określa rozmiar w bajtach buforu lpRgnData .
Wartość zwracana
Jeśli funkcja powiedzie się i nCount określi odpowiednią liczbę bajtów, wartość zwracana jest zawsze nCount. Jeśli funkcja nie powiedzie się lub jeśli parametr nCount określa mniejszą niż odpowiednią liczbę bajtów, zwracana wartość to 0 (błąd).
Uwagi
Te dane obejmują wymiary prostokątów tworzących region. Ta funkcja jest używana w połączeniu z funkcją CRgn::CreateFromData
.
CRgn::GetRgnBox
Pobiera współrzędne prostokąta CRgn
ograniczenia obiektu.
int GetRgnBox(LPRECT lpRect) const;
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt na odbieranie współrzędnych prostokąta ograniczenia. Struktura RECT
ma następującą formę:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Wartość zwracana
Określa typ regionu. Może to być dowolna z następujących wartości:
Region COMPLEXREGION ma nakładające się granice.
Region NULLREGION jest pusty.
Obiekt ERROR
CRgn
nie określa prawidłowego regionu.Region SIMPLEREGION nie ma nakładających się obramowań.
Przykład
Zobacz przykład CRgn ::CreatePolygonRgn.
CRgn::OffsetRgn
Przenosi region przechowywany w CRgn
obiekcie przez określone przesunięcia.
int OffsetRgn(
int x,
int y);
int OffsetRgn(POINT point);
Parametry
x
Określa liczbę jednostek do przeniesienia w lewo lub w prawo.
y
Określa liczbę jednostek, które mają być przenoszone w górę lub w dół.
punkt
Współrzędna x punktu określa liczbę jednostek, które mają być przenoszone w lewo lub w prawo. Współrzędna y punktu określa liczbę jednostek, które mają być przenoszone w górę lub w dół. Parametr punktu może być strukturą POINT
lub obiektem CPoint
.
Wartość zwracana
Typ nowego regionu. Może to być dowolna z następujących wartości:
Region COMPLEXREGION ma nakładające się granice.
Obsługa regionu ERROR jest nieprawidłowa.
Region NULLREGION jest pusty.
Region SIMPLEREGION nie ma nakładających się obramowań.
Uwagi
Funkcja przenosi jednostki regionu x wzdłuż osi x i y wzdłuż osi y .
Wartości współrzędnych regionu muszą być mniejsze lub równe 32 767 i większe niż lub równe -32 768. Parametry x i y należy dokładnie wybrać, aby zapobiec nieprawidłowym współrzędnym regionu.
Przykład
Zobacz przykład CRgn ::CreateEllipticRgn.
CRgn::operator HRGN
Użyj tego operatora, aby pobrać dołączony uchwyt GDI systemu CRgn
Windows obiektu.
operator HRGN() const;
Wartość zwracana
W przypadku powodzenia dojście do obiektu GDI systemu Windows reprezentowanego CRgn
przez obiekt ; w przeciwnym razie wartość NULL.
Uwagi
Ten operator jest operatorem rzutowania, który obsługuje bezpośrednie użycie obiektu HRGN.
Aby uzyskać więcej informacji na temat korzystania z obiektów graficznych, zobacz artykuł Obiekty graficzne w zestawie Windows SDK.
CRgn::P tInRegion
Sprawdza, czy punkt podany przez x i y znajduje się w regionie przechowywanym CRgn
w obiekcie.
BOOL PtInRegion(
int x,
int y) const;
BOOL PtInRegion(POINT point) const;
Parametry
x
Określa logiczną współrzędną x punktu do przetestowania.
y
Określa logiczną współrzędną y punktu do przetestowania.
punkt
Współrzędne x i y punktu określają współrzędne x-i y punktu, aby przetestować wartość. Parametr punktu może być strukturą POINT
lub obiektem CPoint
.
Wartość zwracana
Nonzero, jeśli punkt znajduje się w regionie; w przeciwnym razie 0.
CRgn::RectInRegion
Określa, czy jakakolwiek część prostokąta określonego przez lpRect znajduje się w granicach regionu przechowywanego CRgn
w obiekcie.
BOOL RectInRegion(LPCRECT lpRect) const;
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt. Struktura RECT
ma następującą formę:
typedef struct tagRECT {
int left;
int top;
int right;
int bottom;
} RECT;
Wartość zwracana
Nonzero, jeśli jakakolwiek część określonego prostokąta znajduje się w granicach regionu; w przeciwnym razie 0.
CRgn::SetRectRgn
Tworzy prostokątny region.
void SetRectRgn(
int x1,
int y1,
int x2,
int y2);
void SetRectRgn(LPCRECT lpRect);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokątnego regionu.
y1
Określa współrzędną y lewego górnego rogu prostokątnego regionu.
x2
Określa współrzędną x prawego dolnego rogu prostokątnego regionu.
y2
Określa współrzędną y prawego dolnego rogu prostokątnego regionu.
lpRect
Określa prostokątny region. Może być wskaźnikiem do RECT
struktury lub CRect
obiektu.
Uwagi
W przeciwieństwie do metody CreateRectRgn nie przydziela ona jednak żadnej dodatkowej pamięci z lokalnej sterty aplikacji systemu Windows. Zamiast tego używa miejsca przydzielonego dla regionu przechowywanego CRgn
w obiekcie. Oznacza to, że CRgn
obiekt musi już zostać zainicjowany z prawidłowym regionem systemu Windows przed wywołaniem metody SetRectRgn
. Punkty podane przez x1, y1, x2 i y2 określają minimalny rozmiar przydzielonego miejsca.
Użyj tej funkcji zamiast funkcji składowej CreateRectRgn
, aby uniknąć wywołań menedżera pamięci lokalnej.