///************************************************************************/ /* Copyright (C), 2016-2020, [Home], 保留所有权利; /* 模 块 名:; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[Home]; /* 日 期:[10/26/2016]; /* /* /* 注 意:; /* /* 修改记录:[Home]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef __DRAWOBJ_HEADER__ #define __DRAWOBJ_HEADER__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" //#include "Picture.h" #include "ImageEx.h" #include "shockwaveflash.h" class CGraph; struct LAYOUTSTRUCT { CRect rect; // m_rect (Normalized); // left点; int nX1; // m_rect.left (Normalized); // right点; int nX2; // m_rect.right (Normalized); // top点; int nY1; // m_rect.top (Normalized); // bottom点; int nY2; // m_rect.bottom(Normalized); // width宽; int nXX; // m_rect.Width(); // height高; int nYY; // m_rect.Height(); // left + width/2; int nX0; // 中心点X坐标; // top + heigth/2; int nY0; // 中心点Y坐标; BOOL bHoriz; // 方向标志; BOOL bXInvert; // X方向反转标志; BOOL bYInvert; // Y方向反转标志; int nMinSize; // 可画的最小尺寸; }; // 定义操作 //---------------------------------------------- CAction ----------- class CAction:public CObject { public: // 0=鼠标按下;1=鼠标松开;2=鼠标移动;3=链接操作;4=退出操作; int m_nActionType; // 触发操作的表达式; CString m_strVariant; // 触发操作的条件值; CString m_strActionValue; // 图片路径(用图片来具体化); CString m_strPicPath; DECLARE_SERIAL(CAction); CAction(); virtual CAction* Clone(void); virtual void Serialize(CArchive& ar); CAction& operator=(CAction& action); }; /************************************************************************/ /* Copyright (C), 2016-2020, [IT], 保留所有权利; /* 模 块 名:CDrawObj类, 图元基类; /* 描 述:所有图元的基类; /* /* 版 本:[V]; /* 作 者:[IT]; /* 日 期:[5/11/2016]; /* /* /* 注 意:; /* /* 修改记录:[IT]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ class CDrawObj:public CObject { public: DECLARE_SERIAL(CDrawObj); CDrawObj(); public: CView* m_pView; // 图元大小; CRect m_rect; public: // 图元名称集合; static CStringArray drawsName; // 图元运行时对象集合; static CPtrArray drawsRuntimeClass; static void RegisterClass(CString strName,CRuntimeClass* pRuntimeClass); public: COLORREF m_clrFore; // 前景色; COLORREF m_clrLine; // 线条色; COLORREF m_clrBack; // 背景色; COLORREF m_clrFill; // 填充色; LOGFONT m_logfont; // 字体; CString m_strLineType; // 线型; int m_nLineWidth; // 线宽; CString m_strCaption; // 内联的文本(如果m_bVariant==TRUE,则为变量名); BOOL m_bVariant; // 是否是变量; BOOL m_bDynShow; // 是否动态显示; CString m_strDynShow; // 动态显示条件; BOOL m_bLocked; // 是否锁定不移动; BOOL m_bAligned; // 用来等距排列的标志位 // 动态参数; COLORREF m_clrDynFore; // 动态前景色; CString m_strDynForeCon; // 动态前景内容; COLORREF m_clrDynBack; // 动态背景色; CString m_strDynBackCon; // 动态背景内容; COLORREF m_clrDynLine; // 线条动态色; CString m_strDynLineCon; // 线条动态内容; BOOL m_bDynFore; // 是否动态前景; BOOL m_bDynBack; // 是否动态背景; BOOL m_bDynLine; // 是否动态线条; int m_nFillMode; // 是否填充模式; CString m_strHoriPos; // 水平位置; CString m_strHoriSize; // 水平大小; CString m_strVertiPos; // 垂直位置; CString m_strVertiSize; // 垂直大小; BOOL m_bVertiSize; // 是否垂直大小; BOOL m_bVertiPos; // 是否垂直位置; BOOL m_bHorizSize; // 是否水平大小;注意: 为真时 报警背景闪烁; BOOL m_bHorizPos; // 是否水平位置; int m_nHorAlign; int m_nVerAlign; // 动态值; CRect m_rctCurrent; // 当图元内联变量后,动态显示的区域大小; COLORREF m_clrCurrentFore; COLORREF m_clrCurrentBack; COLORREF m_clrCurrentLine; CString m_strCurrentCaption; // 当前显示的文本(外在显示,与m_strCaption不同); BOOL m_bShow; // 是否可见; float m_fCurrentValue; BOOL m_bShowtemp;//chn add 为了GIF,flasg,OCX的隐藏和显示 // 动作属性; CAction m_downAction; CAction m_upAction; CAction m_moveAction; BOOL m_bOnButtonUp; BOOL m_bOnButtonDown; BOOL m_bOnMove;//注意: 为真时 可以选择,但不能复制和移动 // BOOL m_bHisFreshed; // 组合内动态缩放; double m_dbLeftRate; double m_dbRightRate; double m_dbTopRate; double m_dbBottomRate; public: static BOOL bRuning; // 是否处于运行状态; BOOL m_bModifyMore; // 是否是编辑多个; public: CDrawObj& operator=(CDrawObj& drawObj); virtual CDrawObj* Clone(void); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(void); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual void Draw(CDC* pDC); void DrawText(CDC* pDC); virtual bool Fresh(OUT CRect &RECT ); void DrawHKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu); void DrawVKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu); void DrawArcKedu(CDC* pDC, CRect rect, int nStartAngle, int nEndAngle, int nKedu, COLORREF clrKedu); public: LOGBRUSH GetBrush(); // 画框架; void DrawFrame(CDC* pDC); void ProcessAction(int type); // 获取Pen类型; int GetPenStyle(CString penType); // 布局; void Layout(BYTE Sharp,LAYOUTSTRUCT* pLayout); // 获取手势数量; virtual int GetHandleCount(void); // 获取手势所在点位置; virtual CPoint GetHandle(int nHandle); // 获取手势区域; CRect GetHandleRect(int nHandle); // 获取手势图标; virtual HCURSOR GetHandleCursor(); // 移动到指定区域; virtual void MoveTo(CRect rect); // 移动手势到指定点; virtual void MoveHandleTo(int nHandle, CPoint point); // 画跟踪器; virtual void DrawTracker(CDC* pDC); // 单击; virtual int HitTest(CPoint point); // 是否相交; virtual BOOL Intersects(CRect rect); // 刷新; virtual void Invalidate(void); private: bool m_bFlag1,m_bFlag2,m_bFlag3; }; typedef CTypedPtrList CDrawObjList; //---------------------------------------------- CDrawTLine ------- class CDrawTLine:public CDrawObj { public: DECLARE_SERIAL(CDrawTLine); CDrawTLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawLine ------- class CDrawLine:public CDrawObj { public: DECLARE_SERIAL(CDrawLine); CDrawLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawText -------- class CDrawText:public CDrawObj { public: DECLARE_SERIAL(CDrawText); CDrawText(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawRect -------- class CDrawRect:public CDrawObj { public: DECLARE_SERIAL(CDrawRect); CDrawRect(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawRoundRect -------- class CDrawRoundRect:public CDrawObj { public: DECLARE_SERIAL(CDrawRoundRect); CDrawRoundRect(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawButton ------ class CDrawButton:public CDrawObj { public: DECLARE_SERIAL(CDrawButton); CDrawButton(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBitmap ------ class CDrawBitmap:public CDrawObj { public: DECLARE_SERIAL(CDrawBitmap); CDrawBitmap(); ~CDrawBitmap(); // 动态图像(gif、flash); CString m_strDynFile; // 静态图像(jpg、png); CString m_strStaticFile; // 是否拉伸; BOOL m_bStretch; // 是否动态; BOOL m_bDyn; // 显示动态图像的条件; CString m_strDynCondition; // 是否使用动态图像; BOOL m_bUseDnyFile; // GDI+ ImageEx* m_image; CString m_sOldFilePath; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual bool Fresh( CRect &RECT ); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); BOOL DisplayBMP(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strBMPFile,BOOL bStretch); BOOL DisplayJPG(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strJPGFile,BOOL bStretch); BOOL DisplayPNG(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strPNGFile,BOOL bStretch); BOOL DisplayGIF(CDC* pDC,int nStartX,int nStartY,int nWidth,int nHeight,CString strGIFFile,BOOL bStretch); }; //---------------------------------------------- CDrawGif ------ class CDrawGif:public CDrawObj { public: DECLARE_SERIAL(CDrawGif); CDrawGif(); ~CDrawGif(); // GDI+ ImageEx* m_image; CString m_strDynFile; CString m_strStaticFile; BOOL m_bStretch; BOOL m_bDyn; CString m_strDynCondition; BOOL m_bUseDnyFile; //CPicture m_Picture; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual bool Fresh( CRect &RECT ); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawTransfer ------ class CDrawTransfer:public CDrawObj { public: DECLARE_SERIAL(CDrawTransfer); CDrawTransfer(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCircle(CDC *pDC, POINT origin, int radius); }; //---------------------------------------------- CDrawFlash -------- class CDrawFlash:public CDrawObj { public: DECLARE_SERIAL(CDrawFlash); CDrawFlash(); ~CDrawFlash(); CShockwaveFlash *m_pCtrlFlash; CString m_strFlashPath; bool m_bFlashCreate; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual bool Fresh( CRect &RECT ); }; #endif // !defined(AFX_CDRAWOBJ_H__4539C1EB_10FD_40B5_9BBC_22C008CEAF0F__INCLUDED_)