DrawDoc.h
上传用户:yklx818
上传日期:2013-04-13
资源大小:459k
文件大小:6k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // DrawDoc.h : interface of the CDrawDoc class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DRAWDOC_H__9442AAC2_5173_4ADF_A662_BB95DE02A9A9__INCLUDED_)
  5. #define AFX_DRAWDOC_H__9442AAC2_5173_4ADF_A662_BB95DE02A9A9__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "Line.h"
  10. #include "Circle.h"
  11. #include "Arc.h"
  12. #include "Text.h"
  13. #include "Tag.h"
  14. #include "Pline.h"
  15. #include "PlineRgn.h"
  16. #include "LinkNet.h"
  17. #include "Data.h"
  18. #include "Data1Set.h"
  19. /*class CGraphPara
  20. {
  21. protected:
  22. int n_ColorNumbAll;
  23. int n_LayerNumbAll;
  24. int n_ColorNumb;
  25. int n_LayerNumb;
  26. long * m_ColorList;
  27. LayerStruct* m_LayerList;
  28. BOOL b_Delete;
  29. public:
  30. CGraphPara()
  31. {
  32. n_ColorNumb=500;
  33. n_LayerNumb=100;
  34. m_ColorList=new long[n_ColorNumb];
  35. m_LayerList=new LayerStruct[n_LayerNumb];
  36. n_ColorNumb=4;
  37. n_LayerNumb=1;
  38. m_ColorList[0]=RGB(0,0,0);
  39. m_ColorList[1]=RGB(255,0,0);
  40. m_ColorList[2]=RGB(0,255,0);
  41. m_ColorList[3]=RGB(0,0,255);
  42. m_LayerList[0].b_Display=1;
  43. strcpy(m_LayerList[0].m_Name,"Layer 0");
  44. }
  45.    ~CGraphPara()
  46.    {
  47.    delete m_LayerList;
  48.    delete m_ColorList;
  49.    }
  50. public:
  51. COLORREF GetColor(int n);
  52. BOOL GetDisplayStatue(int n);
  53. };*/
  54. typedef struct GraphSelectStruct
  55. {
  56. short int Lb;
  57. int index;
  58. int id_only;
  59. }GraphSelectStruct;
  60. //BOOL IsRectCross(float minx,float miny,float maxx,float maxy);
  61. //CGraphPara *p_GraphPara;
  62. class CDrawDoc : public CDocument
  63. {
  64. protected: // create from serialization only
  65. DECLARE_DYNCREATE(CDrawDoc)
  66. GraphSelectStruct* GraphSelect;    //存储选中的图形元素
  67. int n_GraphSelect;    //选中图形元素的数目
  68.     CGraphPara m_GraphPara;
  69. //为了绘制某个图形元素
  70. // Attributes
  71. public:
  72. CDrawDoc()
  73. {
  74. // TODO: add one-time construction code here
  75. //    p_GraphPara=&m_GraphPara;
  76. m_Index=new int[3000];
  77. m_MaxScreen=10000;
  78. m_Screen=new ScreenStruct[m_MaxScreen];
  79. //以下设置首屏的参数,并将当前屏幕设置为首屏
  80. m_CurrentScreen=0;
  81. m_Screen[0].sx=0;
  82. m_Screen[0].sy=0;
  83. m_Screen[0].blc=1;
  84. GraphSelect=new GraphSelectStruct[10000];
  85. }
  86.     CLine* AddLine(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,float X1,float Y1,float X2,float Y2);
  87.     CCircle* AddCircle(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,float CircleX,float CircleY,float CircleR,BOOL bFill);
  88.     CArc* AddArc(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,float CircleX,float CircleY,float CircleR,float Angle1,float Angle2);
  89.     CText* AddText(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,float StartX,float StartY,float Angle1,float Angle2,float TextHeight,float TextWide,float OffWide,unsigned char TextFont,int TextLong,CString Text);
  90. CTag* AddTag(short ColorPen,int Layer,float xInsert,float yInsert,float xScale,float yScale,float angle,int only_id,int idBlock);
  91.     CPline* AddPLine(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,int Numble,PointStruct *PointList);
  92.     CPlineRgn* AddPLineRgn(short ColorPen,short ColorBrush,float LineWide,short LineType,short Layer,int id_only,int Numble,PointStruct *PointList,BOOL bTransparent,BOOL bFill);
  93.     CLinkNet* AddNetPoint(float x,float y,float rRadiu,short Layer,int id_only,short ColorPen);
  94.     
  95. CDraw * GetGraph(short Lb,int Index);
  96. void DeleteGraph(short Lb,int Index);
  97. int  GetGraphNumb(short Lb);
  98. int  GetGraphUpperBound(short Lb);
  99. int  GetGraphIndex(short Lb,int ID);
  100. int  GetGraphID(short Lb);
  101. CLinkNet* AddNetLink(float sID,float eID);
  102. BOOL GetNetXy(int netID,float *x,float *y,BOOL *bDelete);
  103. float GetAngle(float xx,float yy,float m_x,float m_y);
  104. BOOL PointSelect(float x,float y,float j1,float blc,int *Lb,int* index,int* id_only);
  105. void AddScreen(float StartX,float StartY,float blc);
  106.    //实现显示全图功能
  107. BOOL GetRect(float *m_Xmin,float *m_Ymin,float *m_Xmax,float *m_Ymax);
  108.    //将选中的元素存储到数组结构中
  109. BOOL AddSelectList(int Lb,int Index,int id_only);
  110. //检查所有的图形元素,计算并返回选中的图形元素的参数
  111. //为了绘制某个图形元素
  112. void DrawGraph(CDC* pDC,int Lb,int index,int DrawMode,int DrawModel,short BackColor);
  113. void Draw(CDC* pDC,int m_DrawMode,int m_DrawModel,short BackColor);
  114. int* m_Index;
  115. int m_CurrentScreen;   //当前屏幕的序号
  116. int m_MaxScreen;       //最多能存储的屏幕数
  117. ScreenStruct* m_Screen;  //记录屏幕参数的结构数组
  118. CData1Set m_data1;
  119. // Operations
  120. public:
  121. // Overrides
  122. // ClassWizard generated virtual function overrides
  123. //{{AFX_VIRTUAL(CDrawDoc)
  124. public:
  125. virtual BOOL OnNewDocument();
  126. virtual void Serialize(CArchive& ar);
  127. //}}AFX_VIRTUAL
  128. // Implementation
  129. public:
  130. virtual ~CDrawDoc();
  131. #ifdef _DEBUG
  132. virtual void AssertValid() const;
  133. virtual void Dump(CDumpContext& dc) const;
  134. #endif
  135. protected:
  136. // Generated message map functions
  137. protected:
  138. //{{AFX_MSG(CDrawDoc)
  139. // NOTE - the ClassWizard will add and remove member functions here.
  140. //    DO NOT EDIT what you see in these blocks of generated code !
  141. //}}AFX_MSG
  142. DECLARE_MESSAGE_MAP()
  143. private:
  144. CTypedPtrArray<CObArray,CLine*>m_LineArray;
  145. CTypedPtrArray<CObArray,CCircle*>m_CircleArray;
  146. CTypedPtrArray<CObArray,CArc*>m_ArcArray;
  147. CTypedPtrArray<CObArray,CText*>m_TextArray;
  148. CTypedPtrArray<CObArray,CTag*>m_TagArray;
  149. CTypedPtrArray<CObArray,CPline*>m_PLineArray;
  150. CTypedPtrArray<CObArray,CPlineRgn*>m_PLineRgnArray;
  151. CTypedPtrArray<CObArray,CLinkNet*>m_NetArray;
  152. // void DrawGraph(CDC* pDC,int Lb,int index,int DrawMode,int DrawModel,short BackColor);
  153. };
  154. /////////////////////////////////////////////////////////////////////////////
  155. //{{AFX_INSERT_LOCATION}}
  156. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  157. #endif // !defined(AFX_DRAWDOC_H__9442AAC2_5173_4ADF_A662_BB95DE02A9A9__INCLUDED_)
  158. //long color=r_Color+g_Color*256+b_Color*256*256;