上机 类实现代码

#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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值