MyDraw.h
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:4k
源码类别:

绘图程序

开发平台:

Visual C++

  1. #include "MyGraphObject.h"
  2. ///////////////////////////////////////////////////////////////////////////////////////////////
  3. class CMyObjectInfo: public CObject
  4. {
  5. public:
  6. BOOL m_del;           //删除标记
  7. BOOL m_selected;      //选中标记
  8.   //int  layer;           //对象所在图层
  9. public:
  10. CMyObjectInfo(BOOL del, BOOL selected);
  11. };
  12. //被选择对象信息类
  13. class CMySelObjectInfo: public CObject
  14. {
  15. public:
  16. int m_type;
  17. int m_index;
  18. public:
  19. CMySelObjectInfo(int type, int index);
  20. };
  21. ///////////////////////////////////////////////////////////////////////////////////////////////
  22. //处理直线、矩形、圆等对象
  23. class CMyOperate : public CObject
  24. {
  25. protected:
  26. DECLARE_DYNCREATE(CMyOperate)
  27. public:
  28. SIZE size;           //图纸大小 
  29. CPoint StartPoint;   //画直线、矩形、圆、圆弧时的起始点 
  30. CPoint oldMidPoint;  //上一次画圆弧时的中间点 
  31. CPoint MidPoint;  //画圆弧时的中间点   
  32. CPoint oldEndPoint;  //上一次画直线、矩形、圆、圆弧时的结束点 
  33. CPoint EndPoint;     //画直线、矩形、圆、圆弧时的结束点 
  34. CPoint OriginPoint;  //画圆弧时的圆心
  35. long Radius;         //画圆、圆弧时的半径
  36. float  Proportion;   //图形缩放比例
  37. COLORREF ForeColor;
  38. int LineStyle;
  39. public:
  40. //对象类指针数组
  41. CObArray m_LineArray;
  42. CObArray m_RectArray;
  43. CObArray m_CircleArray;
  44. CObArray m_ArcArray;
  45.     
  46. //对象信息类指针数组
  47. CObArray m_LineInfoArray;
  48. CObArray m_RectInfoArray;
  49. CObArray m_CircleInfoArray;
  50. CObArray m_ArcInfoArray;
  51. //选中对象信息类指针数组
  52. CObArray m_SelObjInfoArray;
  53. public:
  54.     CMyOperate();
  55. void RedrawAllObject(CDC* pDC);
  56. //选取图形对象
  57. void SelectObject(CDC* pDC, CPoint point);
  58. //取消选取图形对象
  59. BOOL UnselectObject();
  60. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
  61. public:
  62. //处理直线
  63. //用异或擦除旧的直线,绘制新的直线(基于CDC, (0,0)点为窗口区的左上角)
  64. void DrawLineA(CDC* pDC);   
  65. //直接绘制新的直线(基于CDC, (0,0)点为窗口区的左上角),用于屏幕滚动时
  66. void DrawLineB(CDC* pDC);   
  67.     //直接绘制新的直线(基于CDC, (0,0)点为窗口区的左上角),用于增加直线时
  68. void DrawLineC(CDC* pDC);   
  69. //用异或擦除旧的直线(基于CDC, (0,0)点为窗口区的左上角)
  70. void CancelDrawLine(CDC* pDC);
  71. //重画所有的Line对象(基于CDC, (0,0)点为窗口的左上角)
  72. void RedrawLine(CDC* pDC);  
  73. void SelectLine(CDC* pDC, CPoint point);
  74.     BOOL UnselectLine();
  75. void DrawSelLine(CDC* pDC, CMyLine* pLine);
  76. void DelLine(CDC* pDC);
  77. void LightenLine();
  78. //增加直线对象
  79.     void AddLine();
  80.     
  81. //获取指定序号的直线对象
  82.     CMyLine* GetLine(int index);
  83.     //删除所有的直线对象 
  84. void DelAllLine();
  85. //////////////////////////////////////////////////////////////////////////////////////////////
  86. public:
  87. //处理矩形
  88.     void DrawRectA(CDC* pDC);
  89. void DrawRectB(CDC* pDC);
  90. void DrawRectC(CDC* pDC);
  91. void RedrawRect(CDC* pDC);  
  92. void CancelDrawRect(CDC* pDC);
  93. void SelectRect(CDC* pDC, CPoint point);
  94.     BOOL UnselectRect();
  95. void DrawSelRect(CDC* pDC, CMyRect* pRect);
  96. void AddRect();
  97. CMyRect* GetRect(int index);
  98. void DelAllRect();
  99. ////////////////////////////////////////////////////////////////////////////////////////////////
  100. public:
  101. //处理圆
  102. void DrawCircleA(CDC* pDC);
  103.     void DrawCircleB(CDC* pDC);
  104.     void DrawCircleC(CDC* pDC);
  105. void RedrawCircle(CDC* pDC);  
  106. void CancelDrawCircle(CDC* pDC);
  107. void SelectCircle(CDC* pDC, CPoint point);
  108.     BOOL UnselectCircle();
  109. void DrawSelCircle(CDC* pDC, CMyCircle* pCircle);
  110. void AddCircle();
  111. CMyCircle* GetCircle(int index);
  112. void DelAllCircle();
  113. ///////////////////////////////////////////////////////////////////////////////////////////////
  114. public:
  115. //处理圆弧
  116. void DrawArcA(CDC* pDC, int times);
  117.     void DrawArcB(CDC* pDC, int times);
  118.     void DrawArcC(CDC* pDC);
  119. void RedrawArc(CDC* pDC);  
  120. void CancelDrawArc(CDC* pDC, int times);
  121. void SelectArc(CDC* pDC, CPoint point);
  122.     BOOL UnselectArc();
  123. void DrawSelArc(CDC* pDC, CMyArc* pArc);
  124. void AddArc();
  125. CMyArc* GetArc(int index);
  126. void DelAllArc();
  127. ///////////////////////////////////////////////////////////////////////////////////////////////
  128. public:
  129. ~CMyOperate();
  130. void Serialize(CArchive& ar);
  131. };
  132. ////////////////////////////////////////////////////////////////////////////////////////////