CRgn::CreatePolygonRgn

Tworzy wielokątne regionu.

BOOL CreatePolygonRgn( 
   LPPOINT lpPoints, 
   int nCount, 
   int nMode  
);

Parametry

  • lpPoints
    Punkty do tablicy punkt struktur lub tablica CPoint obiektów.Każda struktura Określa współrzędną x i współrzędna y jeden wierzchołek wielokąta.Punkt struktura ma następującą postać:

    typedef struct tagPOINT {

    int x;

    int y;

    } POINT;

  • nCount
    Określa liczbę punkt struktur lub CPoint obiektów w tablicy wskazywanej przez lpPoints.

  • nMode
    Określa tryb napełniania regionu.Ten parametr może być alternatywne lub UZWOJENIE.

Wartość zwracana

Niezerowa, jeśli operacja powiodła się; 0 inaczej.

Uwagi

System zamyka Wielokąt automatycznie, jeśli to konieczne, rysując linię od wierzchołka ostatniej do pierwszej.Wynikowy regionu są przechowywane w CRgn obiektu.

Rozmiar regionu jest ograniczona do 32 767 przez 32 767 logiczne jednostki lub 64 K pamięci, jest mniejsze.

Gdy tryb Wielokąt wypełniania jest alternatywne, system wypełnia obszar między stron nieparzystych i parzystych Wielokąt w każdym wierszu skanowania.Oznacza to, że system wypełnia obszar, między pierwszym i drugim po stronie, między trzecim i czwartym stronie itd.

Gdy tryb Wielokąt wypełniania jest UZWOJENIE, system używa kierunek Sporządzono rysunek do ustalenia, czy wypełnianie obszaru.Każdego segmentu linii wielokąta jest rysowane zegara lub wskazówek zegara.Ilekroć umowną linią wyznaczoną z obszaru na zewnątrz rysunek przechodzi ruchem linia, licznik jest zwiększany.Gdy linia przechodzi przez segment linii zegara, licznik jest zmniejszany.Obszar jest wypełniany, jeśli liczba jest niezerowy, gdy wiersz osiągnie poza rysunek.

Gdy aplikacja zakończy regionu utworzonych za pomocą CreatePolygonRgn funkcji, to należy wybrać region out kontekstu urządzenia i wykorzystania DeleteObject funkcji go 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 );

Wymagania

Nagłówek: afxwin.h

Zobacz też

Informacje

Klasa CRgn

Diagram hierarchii

CRgn::CreatePolyPolygonRgn

CreatePolygonRgn