///************************************************************************/ /* 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 "ReportColPage.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]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /* /* 建议:新设计的图元应按以下方式: /* 图元:1,属性, 2,方法, 3,事件(回调); /************************************************************************/ 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; //---------------------------------------------- CDrawComposite --- class CDrawComposite:public CDrawObj { public: DECLARE_SERIAL(CDrawComposite); CDrawComposite(); CDrawComposite(CDrawObjList &ObjList); ~CDrawComposite(); public: CDrawComposite& operator=(CDrawComposite& drawObj); virtual CDrawObj* Clone(void); virtual void Serialize(CArchive& ar); virtual void Draw(CDC* pDC); virtual void MoveTo(CRect rect); public: CDrawObjList m_ObjList; }; //---------------------------------------------- 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 ); }; //---------------------------------------------- CDrawOval -------- class CDrawOval:public CDrawObj { public: DECLARE_SERIAL(CDrawOval); CDrawOval(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawPie -------- class CDrawPie:public CDrawObj { public: DECLARE_SERIAL(CDrawPie); CDrawPie(); int m_nStartAngle; int m_nSweepAngle; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawFan -------- class CDrawFan:public CDrawObj { public: DECLARE_SERIAL(CDrawFan); CDrawFan(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); virtual BOOL OnAttrib(CPropertySheet& sheet); public: int m_nStep; bool m_bComputed; BOOL m_bRun; CPoint tagPoint[8]; CString m_strLogic; }; //---------------------------------------------- CDrawArc -------- class CDrawArc:public CDrawObj { public: DECLARE_SERIAL(CDrawArc); CDrawArc(); int m_nStartAngle; int m_nSweepAngle; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawPoly -------- class CDrawPoly:public CDrawObj { public: DECLARE_SERIAL(CDrawPoly); CDrawPoly(); ~CDrawPoly(); int m_nPoints; int m_nAllocPoints; CPoint* m_points; public: void AddPoint(const CPoint& point); BOOL RecalcBounds(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual void MoveTo(CRect rect); virtual int GetHandleCount(); virtual CPoint GetHandle(int nHandle); virtual void MoveHandleTo(int nHandle, CPoint point); }; //---------------------------------------------- CDrawMLine -------- class CDrawMLine:public CDrawPoly { public: DECLARE_SERIAL(CDrawMLine); CDrawMLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawArrow ------- class CDrawArrow:public CDrawObj { public: DECLARE_SERIAL(CDrawArrow); CDrawArrow(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawArrow(CDC* pDC, CRect rect, BYTE Direction,COLORREF clrArrow ); }; //---------------------------------------------- CDrawButton ------ class CDrawButton:public CDrawObj { public: DECLARE_SERIAL(CDrawButton); CDrawButton(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDraw3dCircle ------ class CDraw3dCircle:public CDrawObj { public: DECLARE_SERIAL(CDraw3dCircle); CDraw3dCircle(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBreaker ------ class CDrawBreaker:public CDrawObj { public: DECLARE_SERIAL(CDrawBreaker); CDrawBreaker(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawSwitch ------ class CDrawSwitch:public CDrawObj { public: DECLARE_SERIAL(CDrawSwitch); CDrawSwitch(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); virtual BOOL OnAttrib(CPropertySheet& sheet); public: BOOL m_bRun; CString m_strLogic; }; //---------------------------------------------- CDrawGrid ------ class CDrawGrid:public CDrawObj { public: DECLARE_SERIAL(CDrawGrid); CDrawGrid(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawTable ------ class CDrawTable:public CDrawObj { public: DECLARE_SERIAL(CDrawTable); CDrawTable(); BOOL m_bAddAve; BOOL m_bAddMax; BOOL m_bAddMin; int m_nType; BOOL m_bShowRowHead; CColProList m_colList; public: CString GetColFormat(int col); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawPipe ------ class CDrawPipe:public CDrawObj { public: DECLARE_SERIAL(CDrawPipe); CDrawPipe(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawZhePipe ------ class CDrawZhePipe:public CDrawObj { public: DECLARE_SERIAL(CDrawZhePipe); CDrawZhePipe(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawYPipe ------ class CDrawYPipe:public CDrawObj { public: DECLARE_SERIAL(CDrawYPipe); CDrawYPipe(); 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); }; //---------------------------------------------- CDrawData ------ class CDrawDatabox:public CDrawObj { public: DECLARE_SERIAL(CDrawDatabox); CDrawDatabox(); public: int m_nFormat; void DrawText(CDC* pDC,CString& strText); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawWatch ------ class CDrawWatch:public CDrawObj { public: DECLARE_SERIAL(CDrawWatch); CDrawWatch(); int m_nLowwer; int m_nUpper; CString m_strVar; LONG m_lAspectN; LONG m_lAspectD; INT HorzRes; INT VertRes; protected: void DrawText(CDC* pDC,CString& strText); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); void DrawFace(CDC* pDC); }; //---------------------------------------------- CDrawSingleBar ------ class CDrawSingleBar:public CDrawObj { public: DECLARE_SERIAL(CDrawSingleBar); CDrawSingleBar(); protected: void DrawText(CDC* pDC,CString& strText); public: int m_nLowwer; int m_nUpper; float m_fValue; virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawBar --------- class CDrawBar:public CDrawObj { public: DECLARE_SERIAL(CDrawBar); CDrawBar(); public: COLORREF m_clrBar1; COLORREF m_clrBar2; COLORREF m_clrBar3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1; int m_nValue2; int m_nValue3; public: int GetBarNum(); virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); void DrawBar(CDC* pDC,int data,int x1,int x2,COLORREF clrBar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawCurve --------- class CDrawCurve:public CDrawObj { public: DECLARE_SERIAL(CDrawCurve); CDrawCurve(); public: COLORREF m_clrCurve1; COLORREF m_clrCurve2; COLORREF m_clrCurve3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1[60]; int m_nValue2[60]; int m_nValue3[60]; int m_nSecond; float m_fValue1; float m_fValue2; float m_fValue3; CString m_strVarDes1; CString m_strVarDes2; CString m_strVarDes3; int getMin( int iLowwer ); int getMax( int iUpper ); public: virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCurve(CDC* pDC, CRect rect, int* data, COLORREF color); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawHisCurve --------- class CDrawHisCurve:public CDrawObj { public: DECLARE_SERIAL(CDrawHisCurve); CDrawHisCurve(); public: COLORREF m_clrCurve1; COLORREF m_clrCurve2; COLORREF m_clrCurve3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1[60]; int m_nValue2[60]; int m_nValue3[60]; int m_nSecond; public: virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCurve(CDC* pDC, CRect rect, int* data, COLORREF color); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawOCX -------- class CDrawOCX:public CDrawObj { public: DECLARE_SERIAL(CDrawOCX); CDrawOCX(); CString m_strOcxPath; int m_nOcxIndex; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- 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_)