2009년 01월 23일
케로로 그리기
#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 자료 | 트랙백











