#pragma once #include "GlobalDefine.h" #include "DataPoint.h" #include "LabVecRang.h" //管理一条连续线段的点 class CSequentialPoint { public: CSequentialPoint(void); ~CSequentialPoint(void); void WriteWorkFile(vector &LabVec); void ReadWorkFile(CLabVecRang &LabVecRang); void Load(CSequentialPoint &rhs); bool Empty(); void AddDataPoint(CDataPoint pt); void DelAllPt();//删除所有数据点 void DelLastDataPoint();//删除最后一个节点 bool IsInRect(DbRect rect,bool bNeedAllIn); DbRect GetRect(); void Draw(CDC* pDC,CPen&Pen); void DrawLastLine(CDC* pDC,CPen &Pen); void DrawNode(CDC* pDC); void GetLineInRect(DbRect &rect,vector &DataPtLineVec); void GetNodePtLineInRect(DbRect &rect,vector &DataPtLineVec); void Operate(SObjOperatePar par); vector& GetPtContainer(){return m_PtContainer;}; void SetLastPoint(CDataPoint &pt); Dbxy GetFirstPt(); Dbxy GetLastPt(); int GetNodePtIdx(Dbxy pt); void DelNodePtByIdx(int idx); void SetNodePtByIdx(int idx,Dbxy pt); void InsertNode(int idx,Dbxy pt); int GetPtCnt(){return m_PtContainer.size();}; bool HasNodeInRect(DbRect rect); void GetPtData(vector> &vec,int PenNum = -1); bool IntersectWithLine(DbLine &line); private: void DrawDataPointVec(CDC* pDC,vector &vec); void Reverse(); void OperateExt(SObjOperatePar par); private: vector m_PtContainer;//坐标数据的容器 };