#pragma once #include "ItemSelectPoint.h" #include namespace NItem { #define DF_CALIBRATE_FOUR_POINT 0 //四点校位 #define DF_CALIBRATE_TWO_POINT 1 //两点校位 #define DF_CALIBRATE_TO_RECT 2 //校正为矩形 #define DF_CALIBRATE_ANY_POINT 3 //任意多点校正 #define POINT_INPUT 0 //手工输入式 #define POINT_SELECT 1 //拾取点式 #define POINT_FILE 2 //从文件获取坐标式 enum COORDINATE_MODE { COORDINATE_MODE_XY = 0, COORDINATE_MODE_DMS = 1, COORDINATE_MODE_DEGREE = 2 }; class CItemCalibrate : public CItemSelectPoint { public: CItemCalibrate(CSigmaDoc * ppDoc); virtual ~CItemCalibrate(void); void OnDraw(CXyDC* pDC) override; void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override; virtual BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override; virtual BOOL DoSelectEnd(void); virtual BOOL Select(POSITION pos, CPoint2D point); virtual void Redo(void); virtual void Undo(void); virtual int GetSubMenu(); bool CalibrateForFourPoint(std::vector & pts, COORDINATE_MODE mode); bool CalibrateForTwoPoint(std::vector & pts, COORDINATE_MODE mode); protected: void ConvertToDMSAndFill(std::vector & pts, int num); void ConvertToDegreeAndFill(std::vector & pts, int num); void FillCoordinateInput(std::vector & pts, int num); protected: int m_idea; //处理方式 int m_mode; //输入方式(拾取点式|手工输入式|从文件获取坐标式) int m_nCoorIdea; //坐标输入方式:0=XY、1=度分秒、2=度 UINT m_nBackupID; CList RedoPointList; CList PointList; //保存实际点坐标 BOOL CalibrateAny(void); BOOL CalibrateOther(void); public: void SetIdea(int nIdea); void SetMode(int nMode); int GetIdea(void); int GetCoordinateMode(void); int MetaToImage(BOOL bAddAction); void SetBackupID(UINT nID); }; };