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.

96 lines
2.2 KiB
C++

#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<CTick> & 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<CTick> 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__