다음을 통해 공유


CRgn::CreatePolygonRgn

다각형 영역을 만듭니다.

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

매개 변수

  • lpPoints
    배열을 가리키는 포인트 구조체 또는 배열을 CPoint 개체입니다. X 좌표와 y 좌표는 다각형의 꼭지점 하나가 각 구조를 지정합니다. 포인트 구조가 다음 양식:

    typedef struct tagPOINT {

    int x;

    int y;

    } POINT;

  • nCount
    개수를 지정 합니다. 포인트 구조 또는 CPoint 에 배열의 개체를에서 가리키는 여 lpPoints.

  • nMode
    영역에 대 한 채우기 모드를 지정합니다. 이 매개 변수 중 하나를 수 있습니다 대체 또는 권선.

반환 값

작업이 성공 하면 0이 아닌. 그렇지 않으면 0입니다.

설명

시스템 다각형 자동으로 필요한 경우 줄에서 마지막 꼭지점에 첫 번째 그려서 닫힙니다. 결과 영역에 저장 되는 CRgn 개체입니다.

크기의 영역에서 32767 32767 논리 단위 또는 64k의 메모리 제한, 작은 값.

다각형 채우기 모드에 있을 때 대체, 시스템 각 스캐닝선에 홀수와 짝수 다각형 면 사이의 영역을 채웁니다. 즉, 시스템 간의 첫 번째 및 두 번째 측면, 측면, 세 번째 및 네 번째 사이 있는 영역을 채웁니다.

다각형 채우기 모드에 있을 때 권선, 방향에는 그림 되었습니다 그릴 영역을 채우는 지 여부를 결정 하는 시스템을 사용 합니다. 각 선 세그먼트에는 다각형에는 시계 방향 또는 시계 반대 방향으로 그려집니다. 닫힌된 영역을 그림의 바깥쪽으로 그린 가상 선 시계 선 세그먼트를 통해 전달 될 때마다 카운트를 증가 합니다. 줄을 시계 반대 방향으로 라인 세그먼트를 통해 전달 하는 경우의 수가 감소 됩니다. 선 그림의 바깥쪽에 도달 하면 카운트가 0이 아닌 경우 영역이 채워집니다.

때 응용 프로그램이 완료 만든 영역을 사용 하는 CreatePolygonRgn 함수 영역을 장치 컨텍스트 및 사용 선택 해야는 DeleteObject 함수를 제거 합니다.

예제

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 );

요구 사항

헤더: afxwin.h

참고 항목

참조

CRgn 클래스

계층 구조 차트

CRgn::CreatePolyPolygonRgn

CreatePolygonRgn