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