QPointObj.h
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // QPointObj.h: interface for the CQPointObj class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_QPOINTOBJ_H__3A997543_C024_4387_8FFB_301E0C99CE2C__INCLUDED_)
  5. #define AFX_QPOINTOBJ_H__3A997543_C024_4387_8FFB_301E0C99CE2C__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "QBaseObj.h"
  10. #include "AFXTEMPL.H "
  11. //////////////////////////////////////////
  12. ///***************CQGIS****************///
  13. ///类    名:CQPointObj
  14. ///基    型:CQBaseObj
  15. ///说    明:点图元类,具有点位坐标
  16. ///***************CQGIS****************///
  17. //////////////////////////////////////////
  18. class AFX_EXT_CLASS  CQPointObj : public CQBaseObj  
  19. {
  20. public:
  21. CQPointObj();
  22. CQPointObj(CQPoint & pt);
  23. CQPointObj(CQPointObj & ptObj);
  24. void Copy(CQPointObj & pt);
  25. virtual ~CQPointObj();
  26. public:
  27. void SetPointPos(CQPoint & pt);
  28. void SetPointPos(double dx,double dy);
  29. CQPoint GetPointPos();
  30. void GetPointPos(double &dx,double &dy);
  31. double GetPtElevation() const;
  32. void SetPtElevation(double fEle);
  33. public:
  34. CQPointObj * CutOut(CBoundaryRect * pBox); //矩形 裁剪
  35. inline void AddArcID(long lID);
  36. inline long GetArcID(long nIndex);
  37. inline CArray<long,long> * GetArcArray() ;
  38. //其他操作
  39. DECLARE_SERIAL(CQPointObj);
  40. virtual void Serialize(CArchive& ar);
  41. //旋转点对象
  42. virtual void Rotate(CQPoint & pt,double & fAngleDegree);
  43. //移动点对象
  44. virtual void Move(double dx,double dy);
  45. //获取点对象的边界矩形
  46. virtual void GetBoundingRect(CBoundaryRect * pRect);
  47. void SetBoundRect(CBoundaryRect & Rect);
  48. //计算点的边界矩形
  49. virtual void CalculateBoundary(CBoundaryRect * pRect = NULL);//计算图元的边界矩形
  50. //点选
  51. virtual BOOL Select(CQCoordSys * pSys,CQPoint & pt, double fEffectDistance); //点选
  52. //框选
  53. virtual BOOL Select(CQCoordSys * pSys,CBoundaryRect & rect); //框选
  54. //显示子图图元,调用子图的显示函数实现
  55. //m_nDrawMode为下列值之一
  56. //R2_BLACK , //R2_COPYPEN , //R2_MASKNOTPEN 
  57. //R2_MASKPEN  //R2_MASKPENNOT  //R2_MERGENOTPEN 
  58. //R2_MERGEPEN  //R2_MERGEPENNOT   //R2_NOP  
  59. //R2_NOT  ///R2_NOTCOPYPEN  //R2_NOTMASKPEN 
  60. //R2_NOTMERGEPEN  //R2_NOTXORPEN  //R2_WHITE
  61. //R2_XORPEN 
  62. //nSpecialMode 
  63. //0-代表正常显示,此时pColor为空
  64. //1-代表鼠标选中显示,此时pColor为空
  65. //2-以特殊颜色显示,此时pColor不能为空
  66. virtual void Display(CQCoordSys * pSys,CDC * pDC,int nDrawMode,int nSpecialMode,COLORREF * pColor);
  67. // 所有图元x坐标的按照中心点x坐标和缩放倍数缩放,dFlex>1会放大,dFlex<1会缩小
  68. virtual void XFlex(double dcp_x,double dFlex);
  69. // 所有图元y坐标的按照中心点y坐标和缩放倍数缩放,dFlex>1会放大,dFlex<1会缩小
  70. virtual void YFlex(double dcp_x,double dFlex);
  71. //写入文件
  72. virtual void WriteToFile(CFile * pFile);
  73. //读出文件
  74. virtual void ReadFromFile(CFile * pFile);
  75. virtual CString  VarToStr();  //将图元的值转换为字符串格式
  76. private:
  77. CQPoint m_ptPos;
  78. double m_fPtElevation;        //将点位高程作为一个属性加进来
  79. CBoundaryRect m_BoundRect;
  80. //入弧段为正数  进行拓扑操作的设置
  81. CArray<long,long> * m_pArcList; //通过该接点的弧段ID的列表
  82. };
  83. #endif // !defined(AFX_QPOINTOBJ_H__3A997543_C024_4387_8FFB_301E0C99CE2C__INCLUDED_)