DrawObj.h 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. ///************************************************************************/
  2. /* Copyright (C), 2016-2020, [Home], 保留所有权利;
  3. /* 模 块 名:;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[Home];
  8. /* 日 期:[10/26/2016];
  9. /*
  10. /*
  11. /* 注 意:;
  12. /*
  13. /* 修改记录:[Home];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef __DRAWOBJ_HEADER__
  19. #define __DRAWOBJ_HEADER__
  20. #if _MSC_VER > 1000
  21. #pragma once
  22. #endif // _MSC_VER > 1000
  23. #include "resource.h"
  24. //#include "Picture.h"
  25. #include "ImageEx.h"
  26. #include "shockwaveflash.h"
  27. class CGraph;
  28. struct LAYOUTSTRUCT
  29. {
  30. CRect rect; // m_rect (Normalized);
  31. // left点;
  32. int nX1; // m_rect.left (Normalized);
  33. // right点;
  34. int nX2; // m_rect.right (Normalized);
  35. // top点;
  36. int nY1; // m_rect.top (Normalized);
  37. // bottom点;
  38. int nY2; // m_rect.bottom(Normalized);
  39. // width宽;
  40. int nXX; // m_rect.Width();
  41. // height高;
  42. int nYY; // m_rect.Height();
  43. // left + width/2;
  44. int nX0; // 中心点X坐标;
  45. // top + heigth/2;
  46. int nY0; // 中心点Y坐标;
  47. BOOL bHoriz; // 方向标志;
  48. BOOL bXInvert; // X方向反转标志;
  49. BOOL bYInvert; // Y方向反转标志;
  50. int nMinSize; // 可画的最小尺寸;
  51. };
  52. // 定义操作
  53. //---------------------------------------------- CAction -----------
  54. class CAction:public CObject
  55. {
  56. public:
  57. // 0=鼠标按下;1=鼠标松开;2=鼠标移动;3=链接操作;4=退出操作;
  58. int m_nActionType;
  59. // 触发操作的表达式;
  60. CString m_strVariant;
  61. // 触发操作的条件值;
  62. CString m_strActionValue;
  63. // 图片路径(用图片来具体化);
  64. CString m_strPicPath;
  65. DECLARE_SERIAL(CAction);
  66. CAction();
  67. virtual CAction* Clone(void);
  68. virtual void Serialize(CArchive& ar);
  69. CAction& operator=(CAction& action);
  70. };
  71. /************************************************************************/
  72. /* Copyright (C), 2016-2020, [IT], 保留所有权利;
  73. /* 模 块 名:CDrawObj类, 图元基类;
  74. /* 描 述:所有图元的基类;
  75. /*
  76. /* 版 本:[V];
  77. /* 作 者:[IT];
  78. /* 日 期:[5/11/2016];
  79. /*
  80. /*
  81. /* 注 意:;
  82. /*
  83. /* 修改记录:[IT];
  84. /* 修改日期:;
  85. /* 修改版本:;
  86. /* 修改内容:;
  87. /************************************************************************/
  88. class CDrawObj:public CObject
  89. {
  90. public:
  91. DECLARE_SERIAL(CDrawObj);
  92. CDrawObj();
  93. public:
  94. CView* m_pView;
  95. // 图元大小;
  96. CRect m_rect;
  97. public:
  98. // 图元名称集合;
  99. static CStringArray drawsName;
  100. // 图元运行时对象集合;
  101. static CPtrArray drawsRuntimeClass;
  102. static void RegisterClass(CString strName,CRuntimeClass* pRuntimeClass);
  103. public:
  104. COLORREF m_clrFore; // 前景色;
  105. COLORREF m_clrLine; // 线条色;
  106. COLORREF m_clrBack; // 背景色;
  107. COLORREF m_clrFill; // 填充色;
  108. LOGFONT m_logfont; // 字体;
  109. CString m_strLineType; // 线型;
  110. int m_nLineWidth; // 线宽;
  111. CString m_strCaption; // 内联的文本(如果m_bVariant==TRUE,则为变量名);
  112. BOOL m_bVariant; // 是否是变量;
  113. BOOL m_bDynShow; // 是否动态显示;
  114. CString m_strDynShow; // 动态显示条件;
  115. BOOL m_bLocked; // 是否锁定不移动;
  116. BOOL m_bAligned; // 用来等距排列的标志位
  117. // 动态参数;
  118. COLORREF m_clrDynFore; // 动态前景色;
  119. CString m_strDynForeCon; // 动态前景内容;
  120. COLORREF m_clrDynBack; // 动态背景色;
  121. CString m_strDynBackCon; // 动态背景内容;
  122. COLORREF m_clrDynLine; // 线条动态色;
  123. CString m_strDynLineCon; // 线条动态内容;
  124. BOOL m_bDynFore; // 是否动态前景;
  125. BOOL m_bDynBack; // 是否动态背景;
  126. BOOL m_bDynLine; // 是否动态线条;
  127. int m_nFillMode; // 是否填充模式;
  128. CString m_strHoriPos; // 水平位置;
  129. CString m_strHoriSize; // 水平大小;
  130. CString m_strVertiPos; // 垂直位置;
  131. CString m_strVertiSize; // 垂直大小;
  132. BOOL m_bVertiSize; // 是否垂直大小;
  133. BOOL m_bVertiPos; // 是否垂直位置;
  134. BOOL m_bHorizSize; // 是否水平大小;注意: 为真时 报警背景闪烁;
  135. BOOL m_bHorizPos; // 是否水平位置;
  136. int m_nHorAlign;
  137. int m_nVerAlign;
  138. // 动态值;
  139. CRect m_rctCurrent; // 当图元内联变量后,动态显示的区域大小;
  140. COLORREF m_clrCurrentFore;
  141. COLORREF m_clrCurrentBack;
  142. COLORREF m_clrCurrentLine;
  143. CString m_strCurrentCaption; // 当前显示的文本(外在显示,与m_strCaption不同);
  144. BOOL m_bShow; // 是否可见;
  145. float m_fCurrentValue;
  146. BOOL m_bShowtemp;//chn add 为了GIF,flasg,OCX的隐藏和显示
  147. // 动作属性;
  148. CAction m_downAction;
  149. CAction m_upAction;
  150. CAction m_moveAction;
  151. BOOL m_bOnButtonUp;
  152. BOOL m_bOnButtonDown;
  153. BOOL m_bOnMove;//注意: 为真时 可以选择,但不能复制和移动
  154. //
  155. BOOL m_bHisFreshed;
  156. // 组合内动态缩放;
  157. double m_dbLeftRate;
  158. double m_dbRightRate;
  159. double m_dbTopRate;
  160. double m_dbBottomRate;
  161. public:
  162. static BOOL bRuning; // 是否处于运行状态;
  163. BOOL m_bModifyMore; // 是否是编辑多个;
  164. public:
  165. CDrawObj& operator=(CDrawObj& drawObj);
  166. virtual CDrawObj* Clone(void);
  167. virtual void Serialize(CArchive& ar);
  168. virtual BOOL OnAttrib(void);
  169. virtual BOOL OnAttrib(CPropertySheet& sheet);
  170. virtual void Draw(CDC* pDC);
  171. void DrawText(CDC* pDC);
  172. virtual bool Fresh(OUT CRect &RECT );
  173. void DrawHKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu);
  174. void DrawVKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu);
  175. void DrawArcKedu(CDC* pDC, CRect rect, int nStartAngle, int nEndAngle, int nKedu, COLORREF clrKedu);
  176. public:
  177. LOGBRUSH GetBrush();
  178. // 画框架;
  179. void DrawFrame(CDC* pDC);
  180. void ProcessAction(int type);
  181. // 获取Pen类型;
  182. int GetPenStyle(CString penType);
  183. // 布局;
  184. void Layout(BYTE Sharp,LAYOUTSTRUCT* pLayout);
  185. // 获取手势数量;
  186. virtual int GetHandleCount(void);
  187. // 获取手势所在点位置;
  188. virtual CPoint GetHandle(int nHandle);
  189. // 获取手势区域;
  190. CRect GetHandleRect(int nHandle);
  191. // 获取手势图标;
  192. virtual HCURSOR GetHandleCursor();
  193. // 移动到指定区域;
  194. virtual void MoveTo(CRect rect);
  195. // 移动手势到指定点;
  196. virtual void MoveHandleTo(int nHandle, CPoint point);
  197. // 画跟踪器;
  198. virtual void DrawTracker(CDC* pDC);
  199. // 单击;
  200. virtual int HitTest(CPoint point);
  201. // 是否相交;
  202. virtual BOOL Intersects(CRect rect);
  203. // 刷新;
  204. virtual void Invalidate(void);
  205. private:
  206. bool m_bFlag1,m_bFlag2,m_bFlag3;
  207. };
  208. typedef CTypedPtrList<CObList, CDrawObj*> CDrawObjList;
  209. //---------------------------------------------- CDrawTLine -------
  210. class CDrawTLine:public CDrawObj
  211. {
  212. public:
  213. DECLARE_SERIAL(CDrawTLine);
  214. CDrawTLine();
  215. public:
  216. virtual CDrawObj* Clone(void);
  217. virtual void Draw(CDC* pDC);
  218. //virtual bool Fresh( CRect &RECT );
  219. };
  220. //---------------------------------------------- CDrawLine -------
  221. class CDrawLine:public CDrawObj
  222. {
  223. public:
  224. DECLARE_SERIAL(CDrawLine);
  225. CDrawLine();
  226. public:
  227. virtual CDrawObj* Clone(void);
  228. virtual void Draw(CDC* pDC);
  229. //virtual bool Fresh( CRect &RECT );
  230. };
  231. //---------------------------------------------- CDrawText --------
  232. class CDrawText:public CDrawObj
  233. {
  234. public:
  235. DECLARE_SERIAL(CDrawText);
  236. CDrawText();
  237. public:
  238. virtual CDrawObj* Clone(void);
  239. virtual void Draw(CDC* pDC);
  240. virtual void DrawText(CDC* pDC);
  241. virtual bool Fresh( CRect &RECT );
  242. };
  243. //---------------------------------------------- CDrawRect --------
  244. class CDrawRect:public CDrawObj
  245. {
  246. public:
  247. DECLARE_SERIAL(CDrawRect);
  248. CDrawRect();
  249. public:
  250. virtual CDrawObj* Clone(void);
  251. virtual void Draw(CDC* pDC);
  252. //virtual bool Fresh( CRect &RECT );
  253. };
  254. //---------------------------------------------- CDrawRoundRect --------
  255. class CDrawRoundRect:public CDrawObj
  256. {
  257. public:
  258. DECLARE_SERIAL(CDrawRoundRect);
  259. CDrawRoundRect();
  260. public:
  261. virtual CDrawObj* Clone(void);
  262. virtual void Draw(CDC* pDC);
  263. //virtual bool Fresh( CRect &RECT );
  264. };
  265. //---------------------------------------------- CDrawButton ------
  266. class CDrawButton:public CDrawObj
  267. {
  268. public:
  269. DECLARE_SERIAL(CDrawButton);
  270. CDrawButton();
  271. public:
  272. virtual CDrawObj* Clone(void);
  273. virtual void Draw(CDC* pDC);
  274. };
  275. //---------------------------------------------- CDrawBitmap ------
  276. class CDrawBitmap:public CDrawObj
  277. {
  278. public:
  279. DECLARE_SERIAL(CDrawBitmap);
  280. CDrawBitmap();
  281. ~CDrawBitmap();
  282. // 动态图像(gif、flash);
  283. CString m_strDynFile;
  284. // 静态图像(jpg、png);
  285. CString m_strStaticFile;
  286. // 是否拉伸;
  287. BOOL m_bStretch;
  288. // 是否动态;
  289. BOOL m_bDyn;
  290. // 显示动态图像的条件;
  291. CString m_strDynCondition;
  292. // 是否使用动态图像;
  293. BOOL m_bUseDnyFile;
  294. // GDI+
  295. ImageEx* m_image;
  296. CString m_sOldFilePath;
  297. public:
  298. virtual CDrawObj* Clone(void);
  299. virtual void Draw(CDC* pDC);
  300. virtual bool Fresh( CRect &RECT );
  301. virtual void Serialize(CArchive& ar);
  302. virtual BOOL OnAttrib(CPropertySheet& sheet);
  303. BOOL DisplayBMP(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strBMPFile,BOOL bStretch);
  304. BOOL DisplayJPG(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strJPGFile,BOOL bStretch);
  305. BOOL DisplayPNG(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strPNGFile,BOOL bStretch);
  306. BOOL DisplayGIF(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strGIFFile,BOOL bStretch);
  307. };
  308. //---------------------------------------------- CDrawGif ------
  309. class CDrawGif:public CDrawObj
  310. {
  311. public:
  312. DECLARE_SERIAL(CDrawGif);
  313. CDrawGif();
  314. ~CDrawGif();
  315. // GDI+
  316. ImageEx* m_image;
  317. CString m_strDynFile;
  318. CString m_strStaticFile;
  319. BOOL m_bStretch;
  320. BOOL m_bDyn;
  321. CString m_strDynCondition;
  322. BOOL m_bUseDnyFile;
  323. //CPicture m_Picture;
  324. public:
  325. virtual CDrawObj* Clone(void);
  326. virtual void Draw(CDC* pDC);
  327. virtual bool Fresh( CRect &RECT );
  328. virtual void Serialize(CArchive& ar);
  329. virtual BOOL OnAttrib(CPropertySheet& sheet);
  330. };
  331. //---------------------------------------------- CDrawTransfer ------
  332. class CDrawTransfer:public CDrawObj
  333. {
  334. public:
  335. DECLARE_SERIAL(CDrawTransfer);
  336. CDrawTransfer();
  337. public:
  338. virtual CDrawObj* Clone(void);
  339. virtual void Draw(CDC* pDC);
  340. void DrawCircle(CDC *pDC, POINT origin, int radius);
  341. };
  342. //---------------------------------------------- CDrawFlash --------
  343. class CDrawFlash:public CDrawObj
  344. {
  345. public:
  346. DECLARE_SERIAL(CDrawFlash);
  347. CDrawFlash();
  348. ~CDrawFlash();
  349. CShockwaveFlash *m_pCtrlFlash;
  350. CString m_strFlashPath;
  351. bool m_bFlashCreate;
  352. public:
  353. virtual CDrawObj* Clone(void);
  354. virtual void Draw(CDC* pDC);
  355. virtual void DrawText(CDC* pDC);
  356. virtual void Serialize(CArchive& ar);
  357. virtual BOOL OnAttrib(CPropertySheet& sheet);
  358. virtual bool Fresh( CRect &RECT );
  359. };
  360. #endif // !defined(AFX_CDRAWOBJ_H__4539C1EB_10FD_40B5_9BBC_22C008CEAF0F__INCLUDED_)