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.

75 lines
2.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 Arc.h
//主要功能:
//
//程序编写: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "curveex.h"
#include ".\circle.h"
class AFX_EXT_CLASS CArc : public CEllipse
{
CCurveEx *m_pCurveArc;
public:
CArc(void);
virtual ~CArc(void);
double step;
double arc1,arc2;
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 int IsInRange(CRect8 &range,void *HowToViewCurve=NULL);
virtual void GetRange(CRect8 &range,void *HowToViewCurve=NULL);
virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint);
virtual void ScaleProperty(double sx, double sy);
virtual void Rotate(double xs, double ys, double angle);
virtual void Offset(double dx, double dy);
virtual void ScaleCoor(double xs, double ys, double dx, double dy);
virtual void ExchangeXY(void);
virtual void ExchangeXY(void* pProjection); //转换到指定投影坐标,CPrljectio* pProjection
// type为校正类型,比如两点校位、四点校位等;pValue为类对象指针如CCalibrate2、CCalibrate4等
virtual void Calibrate(int type, void* pValue);
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 int ReadPCG2(CFile &fr, const short &ver);
void SetParameter(CPoint2D CircleCenter, CPoint2D ptStart, CPoint2D ptEnd);
void GetInTriangle(CPoint2D& ptArc1, CPoint2D& ptArc2, CPoint2D& ptArc3);//获得内接三角形的三个顶点
virtual void SetInTriangle(CPoint2D& ptArc1, CPoint2D& ptArc2, CPoint2D& ptArc3);//根据内接三角形的三个顶点设置弧
void operator = (CArc &t);
void GetCurve(double step1);
CCurveEx* GetCurve(void);
DWORD GetType(void);
void SetType(DWORD nType);
COLORREF color;
//该定义与椭圆中的定义是连续的,不能相同
enum ArcStyleFlags
{
drawArc = 0x0008, //显示为弧
drawChord = 0x0010, //显示为弦
drawPie = 0x0020 //显示为饼
};
private:
int toCurve(double &step1);
public:
virtual int ReadPCG(void *pxp, const short &ver);
virtual int ReadPCG2(void *pxp, const short &ver);
};