별그리기 (CRgn)
// 다각형의 모양을 가지는 점들의 집합을 준비합니다.
// 여기는 별만 그리지만 삼각형도 똑 같습니다.
// 그리는 모양은 마음대로 바꾸세요.
CPoint points[11];
// 72' 씩 회전된 꼭지점으로 이루어진 점 생성
// 여기서 알아서 모양을 만드세요.
double Pi = 3.14159265359;
for ( int i = 0; i < 10; i += 2 )
{
// 별의 바깥쪽 꼭지점 (큰 반지름으로 만듬)
points[i].x = (long)(25*cos((double)(i*72*Pi)/360.0));
points[i].y = (long)(25*sin((double)(i*72*Pi)/360.0));
// 별의 안쪽 꼭지점 (작은 반지름으로 만듬)
points[i+1].x = (long)(10*cos((double)((i+1)*72*Pi)/360.0));
points[i+1].y = (long)(10*sin((double)((i+1)*72*Pi)/360.0));
}
// 끝점은 첫점과 같게 맞춤니다.
points[10] = points[0];
CRgn rgnStar;
rgnStar.CreatePolygonRgn(points, 11, WINDING);
// 클라이언트 영역을 가져옵니다.
CRect r;
GetClientRect(&r);
// 그림 그릴 브러시를 초기화합니다.
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
// 영역을 초기화 합니다.
CRgn rgn;
rgn.CreateRectRgn(0, 0, 0, 0);
rgn.CopyRgn(&rgnStar);
rgn.OffsetRgn(point.x, point.y);
// 별을 그립니다.
dc.FillRgn(&rgn, &brush);
댓글 없음:
댓글 쓰기