Cgam Lab 5 59
Cgam Lab 5 59
LAB#5
Objective:
Implement 2D Transformation Rotation Function with drawRect()
Exercise:
Source Code:
MFCApplication3View.h:
public:
CMFCApplication3Doc* GetDocument() const;
// Operations
public:
int x[4], y[4];
int xN[4], yN[4];
float theta;
/ Implementation
public:
virtual ~CMFCApplication3View();
void drawRect(int x[4 ], int y[4], CDC*);
void RotateObject(int [4],int [4], int [4], int [4], double Angle);
MFCApplication3View.cpp
void CMFCApplication3View::OnDraw(CDC* pDC)
{
CMFCApplication3Doc* pDoc = GetDocument();
x[0]=200;
y[0]=100;
x[1]=200;
y[1]=30;
x[2]=270;
y[2]=30;
x[3]=270;
y[3]=100;
drawRect(x,y, pDC);
RotateObject( xN, yN, x, y, 30.0);
drawRect(xN,yN, pDC);
RotateObject( xN, yN, x, y, 45.0);
drawRect(xN,yN, pDC);
RotateObject( xN, yN, x, y, 120.0);
drawRect(xN,yN, pDC);
pDC->MoveTo(x[0],y[0]);
pDC->LineTo(x[1], y[1]);
pDC->MoveTo(x[1],y[1]);
pDC->LineTo(x[2], y[2]);
pDC->MoveTo(x[2],y[2]);
pDC->LineTo(x[3], y[3]);
pDC->MoveTo(x[3],y[3]);
pDC->LineTo(x[0], y[0]);
ASSERT_VALID(pDoc);
if (!pDoc)
return;
OUTPUT:
Tasks:
1. Draw a Round Rectangle and then rotate it by different angles. and color their boundary.
2. Draw a triangle and then rotate it by different angles. and color their boundary
TASK 1:
MFCApplication3View.h
MFCApplication3View.cpp
#include "stdafx.h"
#include "math.h"
x[1]=350;
y[1]=55;
x[2]=410;
y[2]=50;
x[3]=410;
y[3]=105;
pDC->RoundRect(x[0],y[0],x[2],y[2],32,32);
pDC->SelectObject(&penRED);
drawRect(x,y, pDC);
RotateObject( xN, yN, x, y, 59.0);
drawRect(xN,yN, pDC);
RotateObject( xN, yN, x, y, 99.0);
drawRect(xN,yN, pDC);
RotateObject( xN, yN, x, y, 40.0);
drawRect(xN,yN, pDC);
pDC->RoundRect(x[0],y[0],x[2],y[2],32,32);
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->RoundRect(x[0],y[0],x[2],y[2],32,32);
OUTPUT:
TASK2:
MFCApplicationView.h:
MFCApplication3View.cpp:
#include "stdafx.h"
#include "math.h"
pDC->MoveTo(x[1],y[1]);
pDC->LineTo(x[2], y[2]);
pDC->SelectObject(hOldPen);
pDC->MoveTo(x[2],y[2]);
pDC->LineTo(x[0], y[0]);
pDC->SelectObject(zOldPen);
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->MoveTo(x[0],y[0]);
pDC->LineTo(x[1], y[1]);\
pDC->SelectObject(pOldPen);
pDC->MoveTo(x[1],y[1]);
pDC->LineTo(x[2], y[2]);
pDC->SelectObject(hOldPen);
CPen* zOldPen=NULL;
zOldPen=pDC->SelectObject(&penRed);
pDC->MoveTo(x[2],y[2]);
pDC->LineTo(x[0], y[0]);
pDC->SelectObject(zOldPen);
OUTPUT: