#include "stdafx.h"
#include "Cshape.h"
//类实现代码
IMPLEMENT_SERIAL (CShape,CObject,1)
void CShape::Serialize (CArchive &ar)
{
if(ar.IsStoring())
ar<<m_pColor<<m_pWidth<<m_pStyle;
else
ar>>m_pColor>>m_pWidth>>m_pStyle;
}
IMPLEMENT_SERIAL (CLine, CShape, 1)
CLine::CLine (POINT pStart, POINT pEnd, int Width, int Style, COLORREF Color)
{
m_pStart=pStart; m_pEnd=pEnd;
m_pWidth=Width; m_pStyle=Style; m_pColor=Color;
}
void CLine::Drawing (CDC *pDC)
{
CPen NewPen,*pOldPen;
NewPen.CreatePen (m_pStyle,m_pWidth,m_pColor);
pOldPen=pDC->SelectObject (&NewPen);
pDC->MoveTo (m_pStart); pDC->LineTo (m_pEnd);
pDC->SelectObject (pOldPen);
}
void CLine::Serialize (CArchive &ar)
{
if(ar.IsStoring())
ar<<m_pStart.x<<m_pStart.y<<m_pEnd.x<<m_pEnd.y;
else
ar>>m_pStart.x>>m_pStart.y>>m_pEnd.x>>m_pEnd.y;
CShape::Serialize (ar);
}
IMPLEMENT_SERIAL (CBezier, CShape, 1)
CBezier::CBezier (POINT points[20], int n, int Width, int Style, COLORREF Color)
{
m_pNum=n;
for (int i=0; i<n; i++)
m_pPoints[i]=points[i];
m_pWidth=Width; m_pStyle=Style; m_pColor=Color;
}
void CBezier::Drawing (CDC *pDC)
{
CPen NewPen, *pOldPen;
NewPen.CreatePen (m_pStyle, m_pWidth, m_pColor);
pOldPen=pDC->SelectObject (&NewPen);
pDC->PolyBezier (m_pPoints, m_pNum);
pDC->SelectObject (pOldPen);
}
void CBezier::Serialize (CArchive &ar)
{
int i;
if(ar.IsStoring())
{
ar<<m_pNum;
for(i=0;i<m_pNum;i++)ar<<m_pPoints[i];
}
else
{ ar>>m_pNum;
for(i=0;i<m_pNum;i++) ar>>m_pPoints[i];
}
CShape::Serialize (ar);
}