www.pudn.com > subject_1_113294.rar > Circle.cpp, change:2002-05-23,size:1683b
// Circle.cpp: implementation of the CCircle class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Paint.h"
#include "Circle.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCircle::CCircle():CElement()
{
End=CPoint(0,0);
Center=CPoint(0,0);
}
CCircle::CCircle(CPoint Center,CPoint End):CElement()
{
this->End=End;
this->Center=Center;
}
CCircle::~CCircle()
{
}
void CCircle::Serialize(CArchive &ar)
{
CElement::Serialize(ar);
if(ar.IsStoring())
{
ar<<End;
ar<<Center;
}
else
{
ar>>End;
ar>>Center;
}
}
void CCircle::DrawItem(CDC *pDC)
{
CPen *Pen=new CPen();
CPen *OldPen;
Pen->CreatePen(LineStyle,LineWidth,LineColor);
OldPen=pDC->SelectObject(Pen);
CBrush *Brush=new CBrush();
CBrush *OldBrush;
if(!IsFilled)
{
Brush->CreateStockObject(NULL_BRUSH);
OldBrush=pDC->SelectObject(Brush);
}
else if(FillMode==-1)
{
Brush->CreateSolidBrush(FillColor);
OldBrush=pDC->SelectObject(Brush);
}
else
{
Brush->CreateHatchBrush(FillMode,FillColor);
OldBrush=pDC->SelectObject(Brush);
}
int Radias=(int)sqrt((Center.x-End.x)*(Center.x-End.x)+(Center.y-End.y)*(Center.y-End.y));
pDC->Ellipse(Center.x-sqrt(2)*Radias,Center.y-sqrt(2)*Radias,Center.x+sqrt(2)*Radias,Center.y+sqrt(2)*Radias);
pDC->SelectObject(OldPen);
pDC->SelectObject(OldBrush);
delete Brush;
delete Pen;
}