Klasa CRgn

Hermetyzuje region interfejsu urządzenia graficznego systemu Windows (GDI).

Składnia

class CRgn : public CGdiObject

Członkowie

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

Cobject

Cgdiobject

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ę POINTCPoint 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 CreateRectRgnprogram 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 CreateRectRgnIndirectprogram 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.

Zobacz też

Klasa CWnd
Wykres hierarchii