drawDoc.h
上传用户:jinlangri
上传日期:2022-07-17
资源大小:10774k
文件大小:4k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // drawDoc.h : interface of the CDrawDoc class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DRAWDOC_H__CA9C4914_07B2_11D4_B0C9_5254AB167DFC__INCLUDED_)
  5. #define AFX_DRAWDOC_H__CA9C4914_07B2_11D4_B0C9_5254AB167DFC__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "stdafx.h"
  10. class CDrawBase : public CObject
  11. {
  12. protected:
  13. COLORREF m_Color;            //图形颜色
  14. DWORD m_X1, m_Y1, m_X2, m_Y2;//包围矩形
  15. CDrawBase() {}
  16. DECLARE_SERIAL(CDrawBase)     //序列化声明
  17. public:
  18. CRect GetDimRect();           //获得包围矩形
  19. virtual void Draw(CDC *pDC) {}
  20. virtual void Serialize(CArchive& ar);
  21. };
  22. class CLine : public CDrawBase
  23. {
  24. protected:
  25. DWORD m_Thickness;          //直线的线宽
  26. CLine() {}
  27. DECLARE_SERIAL(CLine)       //序列化声明
  28. public:
  29. CLine(int X1, int Y1, int X2, int Y2, COLORREF Color, int Thickness);
  30. virtual void Draw(CDC *pDC);
  31. virtual void Serialize(CArchive& ar);
  32. };
  33. class CRectangle : public CDrawBase
  34. {
  35. protected:
  36. DWORD m_Thickness;         //矩形的线宽
  37. CRectangle() {}
  38. DECLARE_SERIAL(CRectangle) //序列化声明
  39. public:
  40. CRectangle(int X1, int Y1, int X2, int Y2, COLORREF Color, int Thickness);
  41. virtual void Draw(CDC *pDC);
  42. virtual void Serialize(CArchive& ar);
  43. };
  44. class CRectFill : public CDrawBase
  45. {
  46. protected:
  47. CRectFill() {}
  48. DECLARE_SERIAL(CRectFill)   //序列化声明
  49. public:
  50. CRectFill(int X1, int Y1, int X2, int Y2, COLORREF Color);
  51. virtual void Draw(CDC *pDC);
  52. };
  53. class CRectRound : public CDrawBase
  54. {
  55. protected:
  56. DWORD m_Thickness;          //圆角矩形的线宽
  57. CRectRound() {}
  58. DECLARE_SERIAL(CRectRound)  //序列化声明
  59. public:
  60. CRectRound(int X1, int Y1, int X2, int Y2, COLORREF Color, int Thickness);
  61. virtual void Draw(CDC *pDC);
  62. virtual void Serialize(CArchive& ar);
  63. };
  64. class CRectRoundFill : public CDrawBase
  65. {
  66. protected:
  67. CRectRoundFill() {}
  68. DECLARE_SERIAL(CRectRoundFill) //序列化声明
  69. public:
  70. CRectRoundFill(int X1, int Y1, int X2, int Y2, COLORREF Color);
  71. virtual void Draw(CDC *pDC);
  72. };
  73. class CCircle : public CDrawBase
  74. {
  75. protected:
  76. DWORD m_Thickness;     //圆的线宽
  77. CCircle() {}
  78. DECLARE_SERIAL(CCircle)//序列化声明
  79. public:
  80. CCircle(int X1, int Y1, int X2, int Y2, COLORREF Color, int Thickness);
  81. virtual void Serialize(CArchive& ar);
  82. virtual void Draw(CDC *pDC);
  83. };
  84. class CCircleFill : public CDrawBase
  85. {
  86. protected:
  87. CCircleFill() {}
  88. DECLARE_SERIAL(CCircleFill)//序列化声明
  89. public:
  90. CCircleFill(int X1, int Y1, int X2, int Y2, COLORREF Color);
  91. virtual void Draw(CDC *pDC);
  92. };
  93. class CText : public CDrawBase
  94. {
  95. protected:
  96. LOGFONT m_lf;
  97. CString m_String;
  98. CText() {}
  99. DECLARE_SERIAL(CText)  //序列化声明
  100. public:
  101. CText(int X1, int Y1, int X2, int Y2, COLORREF Color, LOGFONT lf, CString str);
  102. virtual void Draw(CDC *pDC);
  103. virtual void Serialize(CArchive& ar);
  104. };
  105. class CDrawDoc : public CDocument
  106. {
  107. protected:
  108. CTypedPtrArray<CObArray, CDrawBase *> m_DrawArray;
  109. public:
  110. void AddDraw(CDrawBase *pDraw);
  111. CDrawBase *GetDraw(int Index);
  112. int GetNumDraws();
  113. protected: // create from serialization only
  114. CDrawDoc();
  115. DECLARE_DYNCREATE(CDrawDoc)
  116. // Attributes
  117. public:
  118. // Operations
  119. public:
  120. // Overrides
  121. // ClassWizard generated virtual function overrides
  122. //{{AFX_VIRTUAL(CDrawDoc)
  123. public:
  124. virtual BOOL OnNewDocument();
  125. virtual void Serialize(CArchive& ar);
  126. virtual void DeleteContents();
  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. afx_msg void OnEditClearAll();
  140. afx_msg void OnUpdateEditClearAll(CCmdUI* pCmdUI);
  141. afx_msg void OnEditUndo();
  142. afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
  143. //}}AFX_MSG
  144. DECLARE_MESSAGE_MAP()
  145. };
  146. /////////////////////////////////////////////////////////////////////////////
  147. //{{AFX_INSERT_LOCATION}}
  148. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  149. #endif // !defined(AFX_DRAWDOC_H__CA9C4914_07B2_11D4_B0C9_5254AB167DFC__INCLUDED_)