You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.8 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> Circle.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include ".\pointnamerect.h"
#include "curveex.h"
class AFX_EXT_CLASS CEllipse : public CPointNameRect
{
public:
CEllipse(void);
virtual ~CEllipse(void);
void Serialize(CArchive& ar, const short &ver) override;
virtual int Read(CFile &fr, const short& ver);
virtual void Write(CFile &fw, const short& ver);
virtual bool GetRange(CRect8 &range);
virtual BOOL IsInRange(CRect8& range);
virtual void Rotate(double xs, double ys, double angle);
virtual void ScaleProperty(double sx, double sy);
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver);
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver);
virtual void WritePCG2(CFile &fw, const short& ver, int nBaseTabNum);
virtual int ReadPCG2(CFile &fr, const short &ver);
int ReadEllipse(CFile &fr); //<2F>ϸ<EFBFBD>ʽ<EFBFBD><CABD>Բ
virtual void SetInTriangle(CPoint2D& ptArc1, CPoint2D& ptArc2, CPoint2D& ptArc3);//<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ
void GetPoint(double& x, double &y, double angle); //<2F><><EFBFBD>ݽǶȻ<C7B6><C8BB><EFBFBD>Բ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
CCurveEx* ToCurve(double AngleStep);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD>Ҫdelete;
CSize8 GetRadius(int nMode=0); //<2F><><EFBFBD>ð뾶,nMode=0Ϊԭ<CEAA><EFBFBD><EBBEB6>nMode=1Ϊ<31><CEAA><EFBFBD>İ뾶<C4B0><EBBEB6>ԭ<EFBFBD>뾶+<2B><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>/2<><32>,nMode=2Ϊ<32><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBEB6>ԭ<EFBFBD>뾶+<2B><><EFBFBD>ȣ<EFBFBD>
void operator=(CEllipse& cir);
double m_dCurveWidth; //<2F><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
DWORD m_nFlags; //<2F><><EFBFBD>ȶ<EFBFBD>λ<EFBFBD><CEBB>
DWORD GetWidthPosition(void);
void SetWidthPosition(DWORD nPos);
COLORREF color;
COLORREF fillColor;
int fillState = 0; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>(4<><34>, 20<32><30><EFBFBD><EFBFBD> <20><>˫<EFBFBD><CBAB>2032<33><32><EFBFBD><EFBFBD>)
// Width Style Flags
enum WidthStyleFlags
{
posCenter = 0x0001, //<2F><><EFBFBD><EFBFBD>
posOut = 0x0002, //<2F><><EFBFBD><EFBFBD>
posIn = 0x0004 //<2F>ڲ<EFBFBD>
};
public:
virtual int ReadPCG(void *pxp, const short &ver);
virtual int ReadPCG2(void *pxp, const short &ver);
};
class AFX_EXT_CLASS CCircle : public CEllipse
{
public:
CCircle(void);
virtual ~CCircle(void);
public:
virtual int Read(CFile &fr, const short& ver);
virtual void Write(CFile &fw, const short& ver);
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
virtual int ReadDML(CFile &fw, const short &ver);
virtual int ReadDMLDonut(CFile &fr, const short &ver);
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
virtual int ReadPCG(CFile &fw, const short &ver);
virtual int ReadPCGDonut(CFile &fr, const short &ver);
//virtual int ReadAnyPCG(CFile &fw, const short &ver);
virtual void ScaleProperty(double sx, double sy);
int ReadDonut(CFile& fr);
void operator=(CCircle& cir);
public:
virtual int ReadPCG(void *pxp, const short &ver);
virtual int ReadPCGDonut(void *pxp, const short &ver);
};