MFC—课程设计
int OrgY; int width; int high; int linewidth;
int R1,R2,G1,G2,B1,B2; };
class CSquare:public CShape { public:
CSquare();
CSquare(int x,int y,int w,int line,int r1,int g1,int b1,int r2,int
b2,int g2);
void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内 virtual void Serialize(CArchive& ar );//序列化正方形图元
private: };
class CRectangle:public CShape { public:
CRectangle();
CRectangle(int x,int y,int w,int h,int line,int r1,int g1,int b1,int DECLARE_SERIAL(CSquare)//声明类CSquare支持序列化
r2,int b2,int g2);
void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内
26
MFC—课程设计
virtual void Serialize(CArchive& ar );//序列化正方形图元
private: };
class CTriangle:public CShape { public:
CTriangle();
CTriangle(int x,int y,int w,int h,int line,int r1,int g1,int b1,int DECLARE_SERIAL(CRectangle)//声明类CRectangle支持序列化
r2,int b2,int g2);
void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内 virtual void Serialize(CArchive& ar );//序列化正方形图
private: };
class CCircle:public CShape { public:
CCircle();
CCircle(int x,int y,int w,int line,int r1,int g1,int b1,int r2,int DECLARE_SERIAL(CTriangle)//声明类CTriangle支持序列化
b2,int g2);
void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内 virtual void Serialize(CArchive& ar );//序列化正方形图
27
MFC—课程设计
private: };
class CEllipse:public CShape { public:
CEllipse();
CEllipse(int x,int y,int w,int h,int line,int r1,int g1,int b1,int DECLARE_SERIAL(CCircle)//声明类CCircle支持序列化
r2,int b2,int g2);
void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内 virtual void Serialize(CArchive& ar );//序列化正方形图
private: };
class CText:public CShape { public:
CText();
CText(int x,int y,int r1,int g1,int b1,int a); void Draw(CDC*pDC);//绘制
bool IsMatched(CPoint pnt);//重载点pnt是否落在图元内 virtual void Serialize(CArchive& ar );//序列化正方形图 DECLARE_SERIAL(CEllipse)//声明类CEllipse支持序列化
private:
int angle;
28
MFC—课程设计
};
DECLARE_SERIAL(CText)//声明类CText支持序列化
#endif
// !defined(AFX_SHAPE_H__9F3D8253_0729_4802_9938_EDAA421048A0__INCLUDED_)
2.Shape.cpp
// Shape.cpp: implementation of the CShape class. //
//////////////////////////////////////////////////////////////////////
#include \#include \#include \#include \#include \#include \#ifdef _DEBUG #undef THIS_FILE
static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
29
MFC—课程设计
IMPLEMENT_SERIAL(CSquare, CObject, 1)//实现类CSquare的序列化,指定版本为1
IMPLEMENT_SERIAL(CCircle, CObject, 1) IMPLEMENT_SERIAL(CRectangle, CObject, 1) IMPLEMENT_SERIAL(CEllipse, CObject, 1) IMPLEMENT_SERIAL(CTriangle, CObject, 1) IMPLEMENT_SERIAL(CText, CObject, 1) CShape::CShape() { }
CShape::~CShape() { } //正方形
void CSquare::Serialize(CArchive &ar) { if (ar.IsStoring()) { ar << OrgX<< OrgY;//原点坐标 ar < ar<< linewidth;//线宽 } else { ar >> OrgX >>OrgY;//原点坐标 ar >>width; 30