케로로 그리기

#define STARSIZE1 10
#define STARSIZE2 4
#define STARSIZE3 30
#define STARSIZE4 15
#define PI 3.14159265359

CKeroroView::CKeroroView()
{
 // TODO: add construction code here
 // 모자캡 별
 CPoint point[11];

 for(int i=0; i<10; i+=2)
 {
  point[i].x = (long)(STARSIZE1*cos((double)(i*72*PI)/360.0));
  point[i].y = (long)(STARSIZE1*sin((double)(i*72*PI)/360.0));

  point[i+1].x = (long)(STARSIZE2*cos((double)((i+1)*72*PI)/360.0));
  point[i+1].y = (long)(STARSIZE2*sin((double)((i+1)*72*PI)/360.0));
 }
 point[10] = point[0];

 m_rgnStar.CreatePolygonRgn(point, 11, WINDING);

 // 배때기 별
 CPoint point1[11];

 for(int j=0; j<10; j+=2)
 {
  point1[j].x = (long)(STARSIZE3*cos((double)(j*72*PI)/360.0));
  point1[j].y = (long)(STARSIZE3*sin((double)(j*72*PI)/360.0));

  point1[j+1].x = (long)(STARSIZE4*cos((double)((j+1)*72*PI)/360.0));
  point1[j+1].y = (long)(STARSIZE4*sin((double)((j+1)*72*PI)/360.0));
 }
 point1[10] = point1[0];

 m_rgnStar1.CreatePolygonRgn(point1, 11, WINDING);
}

CKeroroView::~CKeroroView()
{
}

BOOL CKeroroView::PreCreateWindow(CREATESTRUCT& cs)
{
 // TODO: Modify the Window class or styles here by modifying
 //  the CREATESTRUCT cs

 return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CKeroroView drawing
void CKeroroView::OnDraw(CDC* pDC)
{
 CKeroroDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here

 CClientDC dc(this);

 // 모자 캡
 CBrush brush, *pOldBrush;
 brush.CreateSolidBrush(RGB(255,255,0));
 pOldBrush = (CBrush*)dc.SelectObject(&brush);
 dc.Ellipse(100, 70, 300, 300);

 // 별
 CBrush brush1;
 brush1.CreateSolidBrush(RGB(255,0,0));

 CRgn rgn;
 rgn.CreateRectRgn(0, 0, 0, 0);

 rgn.CopyRgn(&m_rgnStar);
 rgn.OffsetRgn(200, 88);

 pDC->FillRgn(&rgn, &brush1);
 pDC->FrameRgn(&rgn, &brush1, 1, 1);

 // 오른쪽 모자깃
 CBrush brush2, *pOldBrush2;
 brush2.CreateSolidBrush(RGB(255,255,0));
 pOldBrush2 = (CBrush*)dc.SelectObject(&brush2);
 dc.Ellipse(205, 160, 315, 320);

 // 왼쪽 모자깃
 CBrush brush3, *pOldBrush3;
 brush3.CreateSolidBrush(RGB(255,255,0));
 pOldBrush3 = (CBrush*)dc.SelectObject(&brush3);
 dc.Ellipse(85, 160, 195, 320);

 // 왼쪽 팔
 CBrush brush4, *pOldBrush4;
 brush4.CreateSolidBrush(RGB(0,200,0));
 pOldBrush4 = (CBrush*)dc.SelectObject(&brush4);
 dc.Ellipse(90, 330, 210, 350);

 // 오른쪽 팔
 CBrush brush5, *pOldBrush5;
 brush5.CreateSolidBrush(RGB(0,200,0));
 pOldBrush5 = (CBrush*)dc.SelectObject(&brush5);
 dc.Ellipse(190, 330, 310, 350);

 // 왼쪽 다리
 CBrush brush6, *pOldBrush6;
 brush6.CreateSolidBrush(RGB(0,200,0));
 pOldBrush6 = (CBrush*)dc.SelectObject(&brush6);
 dc.Ellipse(150, 350, 180, 580);

 // 오른쪽 다리
 CBrush brush7, *pOldBrush7;
 brush7.CreateSolidBrush(RGB(0,200,0));
 pOldBrush7 = (CBrush*)dc.SelectObject(&brush7);
 dc.Ellipse(220, 350, 250, 580);

 // 몸통
 CBrush brush8, *pOldBrush8;
 brush8.CreateSolidBrush(RGB(0,200,0));
 pOldBrush8 = (CBrush*)dc.SelectObject(&brush8);
 dc.Ellipse(150, 300, 250, 500);

 // 배때기
 CBrush brush9, *pOldBrush9;
 brush9.CreateSolidBrush(RGB(255,255,255));
 pOldBrush9 = (CBrush*)dc.SelectObject(&brush9);
 dc.Ellipse(170, 300, 230, 480);

 // 배때기 별
 CBrush brush10;
 brush10.CreateSolidBrush(RGB(255,0,0));

 CRgn rgn1;
 rgn1.CreateRectRgn(0, 0, 0, 0);

 rgn1.CopyRgn(&m_rgnStar1);
 rgn1.OffsetRgn(200, 390);

 pDC->FillRgn(&rgn1, &brush10);
 pDC->FrameRgn(&rgn1, &brush10, 1, 1);

 // 얼굴
 CBrush brush11, *pOldBrush11;
 brush11.CreateSolidBrush(RGB(0,200,0));
 pOldBrush11 = (CBrush*)dc.SelectObject(&brush11); 
 dc.Ellipse(100, 100, 300, 320);

 // 왼쪽 흰눈
 CBrush brush12, *pOldBrush12;
 brush12.CreateSolidBrush(RGB(255,255,255));
 pOldBrush12 = (CBrush*)dc.SelectObject(&brush12);
 dc.Ellipse(115, 140, 175, 200);

 // 오른쪽 흰눈
 CBrush brush13, *pOldBrush13;
 brush13.CreateSolidBrush(RGB(255,255,255));
 pOldBrush13 = (CBrush*)dc.SelectObject(&brush13);
 dc.Ellipse(225, 140, 285, 200);

 // 왼쪽 검은눈
 CBrush brush14, *pOldBrush14;
 brush14.CreateSolidBrush(RGB(0,0,0));
 pOldBrush14 = (CBrush*)dc.SelectObject(&brush14);
 dc.Ellipse(125, 150, 165, 190);

 // 오른쪽 검은눈
 CBrush brush15, *pOldBrush15;
 brush15.CreateSolidBrush(RGB(0,0,0));
 pOldBrush15 = (CBrush*)dc.SelectObject(&brush15);
 dc.Ellipse(235, 150, 275, 190);

 // 주둥이
 CBrush brush16, *pOldBrush16;
 brush16.CreateSolidBrush(RGB(255,255,255));
 pOldBrush16 = (CBrush*)dc.SelectObject(&brush16);
 dc.Pie(100, 100, 300, 320, 90, 350, 450, 480);

 // 입
 CBrush brush17, *pOldBrush17;
 brush17.CreateSolidBrush(RGB(255,75,0));
 pOldBrush17 = (CBrush*)dc.SelectObject(&brush17);
 dc.Pie(150, 150, 250, 270, 90, 350, 450, 480);

 dc.SelectObject(pOldBrush);
}

by 유니콘 | 2009/01/23 14:26 | MFC 자료 | 트랙백

※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지          다음 페이지 ▶