#pragma once #ifndef AbstraceAxis_h__ #define AbstraceAxis_h__ #include "drawingobject.h" #include "ChartDataSet.h" #include "CommonDefine.h" namespace NChart { class AFX_EXT_CLASS CTick { public: CTick() { pos=0; label=""; isMajor=FALSE; } double pos; CString label; bool isMajor; }; class AFX_EXT_CLASS CAbstractAxis : public CDrawingObject { public: CAbstractAxis(CString label,CChartDataSet * pDataset,const CRect8& rcClient,DIRECTION direction,LAYOUTPOS pos); virtual ~CAbstractAxis(void); virtual void SetRect(const CRect8& rcClient); virtual void SetAxisType(AXISTYPE axisType); virtual AXISTYPE GetAxisType(); virtual void SetDataSet(CChartDataSet * pDataset); virtual double OffsetDistance(double val)=0; virtual void Draw(CXyDC &dc); virtual bool Create(); virtual void SetAxisPos(LAYOUTPOS axisPos); virtual LAYOUTPOS GetAxisPos(); virtual void SetAxisFont(GDFLOGFONT font); ///* 坐标轴方向默认为横向 */ virtual DIRECTION GetDirection(); virtual void SetDirection(DIRECTION direction); virtual vector & GetTickArray() { return m_vecTicksArray; } virtual void SetAsMainAxis(bool isMain); virtual bool IsMain(); virtual double GetLowerBound(); virtual double GetUpBound(); virtual double GetMinAxisSpace(); virtual AXISDATAREF GetAxisDataRef(){return m_eAxisDataRef;}; virtual void SetAxisDataRef(AXISDATAREF axisDataRef){m_eAxisDataRef=axisDataRef;}; virtual AXISMARKPOS GetAxisMarkPos(){return m_eAxisMarkPos;}; virtual void SetAxisMarkPos(AXISMARKPOS pos){m_eAxisMarkPos=pos;}; protected: virtual void AxisRangeAutoBound(); protected: CChartDataSet * m_pDataset; vector m_vecTicksArray; DIRECTION m_eDirection; ///* 坐标轴类型默认为线性 */ AXISTYPE m_eAxisType; ///* 坐标轴布局的位置 */ LAYOUTPOS m_eAxisPos; int m_iMaxLabelChar; double m_dMaxTickLength; bool m_bIsMainAxis; //坐标轴值 double m_dUpperBound; double m_dLowerBound; double m_dMajorStepVal; double m_dMinorStepVal; double m_dValCoorFactor; AXISMARKPOS m_eAxisMarkPos; AXISDATAREF m_eAxisDataRef; double m_dStartValue; double m_dEndValue; //GDI属性 GDFLOGPEN m_pen; GDFLOGFONT m_font; }; }//namespace #endif // AbstraceAxis_h__