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

绘图程序

开发平台:

Visual C++

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