MFC Drawing Lines and Shapes Example

#include <afxwin.h>
class CSimpleApp : public CWinApp
{
public:
BOOL InitInstance();
};
class CMainFrame : public CFrameWnd
{
public:
CMainFrame();
DECLARE_MESSAGE_MAP()
afx_msg void OnPaint();
};


BOOL CSimpleApp::InitInstance(){
m_pMainWnd = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}

CMainFrame::CMainFrame()
{
CRect rect(10,10,600,300);
Create(NULL, TEXT("Drawing Lines and Shapes MFC"),WS_OVERLAPPEDWINDOW,rect);
}
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
CSimpleApp MFCApp1;


afx_msg void CMainFrame::OnPaint()
{
CPaintDC dc(this);

//array structure for polygon
CPoint polygon[8];
polygon[0] = CPoint(30, 185);
polygon[1] = CPoint(95, 185);
polygon[2] = CPoint(105, 130);
polygon[3] = CPoint(65, 145);
polygon[4] = CPoint(30, 135);

//array structure for bezier curve
CPoint bezier[8];
bezier[0] = CPoint(280, 180);
bezier[1] = CPoint(320, 180);
bezier[2] = CPoint(325, 130);
bezier[3] = CPoint(350, 130);

//draw bounding box for display
dc.MoveTo(10,10);
dc.LineTo(570,10);
dc.LineTo(570,240);
dc.LineTo(10,240);
dc.LineTo(10,10);

//draws ellipse using default pen and brush
dc.Ellipse(30, 30, 120, 90);
dc.TextOut(50,95,TEXT("Ellipse"),7);

//draws rounded rectangle with green brush
CBrush crColor(RGB(0, 255, 0));
dc.SelectObject(crColor);
dc.RoundRect( 150, 30, 240, 90, 15, 20);
dc.TextOut(130,95,TEXT("Rounded rectangle"),17);

//draws chord with yellow vertical hatchbrush
CBrush hatchbrush;
hatchbrush.CreateHatchBrush(HS_VERTICAL ,RGB(255,255,0));
dc.SelectObject(hatchbrush);
dc.Chord( 270, 30, 360, 90, 270, 45, 360, 45);
dc.TextOut(300,95,TEXT("Chord"),5);

//draws polygon with red horitizontal hatchbrush
CBrush hatchbrush1;
hatchbrush1.CreateHatchBrush(HS_HORIZONTAL ,RGB(255,0,0));
dc.SelectObject(hatchbrush1);
dc.Polygon(polygon, 5);
dc.TextOut(50,195,TEXT("Polygon"),7);

//draws rectangle with black brush
CBrush blackbrush(RGB(0,0,0));
dc.SelectObject(blackbrush);
dc.Rectangle( 150, 130, 230, 180);
dc.TextOut(160,195,TEXT("Rectangle"),9);

//draws Bezier curve with default pen
dc.PolyBezier(bezier,4);
dc.TextOut(290,195,TEXT("Bezier"),6);

//draws pie with white brush
CBrush whitebrush(RGB(255,255,255));
dc.SelectObject(whitebrush);
dc.Pie(400,30, 490,90, 270,45, 360,45);
dc.TextOut(435,95,TEXT("Pie"),3);

//draw lines
CPen hpen(PS_DASH,1,RGB(0, 0, 255));
dc.MoveTo(400,130);
dc.SelectObject(hpen);
dc.LineTo(490,130);
dc.MoveTo(400,155);
CPen hpen1(PS_DOT,1,RGB(255, 0, 255));
dc.SelectObject(hpen1);
dc.LineTo(490,155);
dc.MoveTo(400,180);
CPen hpen2(PS_DASHDOTDOT,1,RGB(255, 0, 0));
dc.SelectObject(hpen2);
dc.LineTo(490,180);
dc.TextOut(430,195,TEXT("Lines"),5);
}