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; 
}