#pragma once #include "xyinsertdc.h" #include "Text.h" #include "MetaFile.h" #include "Circle.h" //为了方便导出其它格式文件及扩展DC应用而写 class AFX_EXT_CLASS CXyDCExport : public CXyInsertDC { public: CXyDCExport(void); virtual ~CXyDCExport(void); /////////////////////////////////////////////////////////////////////////// //需要在派生类中重写的函数 //begin //曲线 //为了输出连续曲线,必须在派生类中重写 //该函数可以将MoveTo、LineTo、PolyLine(CCurveEx)全部处理 virtual void PolyLine(CPointList& dp) = 0; //文字 virtual void Draw(CText& text, CCurveEx& curve); //充填 //virtual void PaintRgn(CCurveEx& curve); //图像 //virtual void Draw(CImageInsert& image); //需要特殊处理时重写,不需要时将最终调用图像显示函数 //virtual void Draw(CMesh &mesh); //像素点 //virtual void SetPixel(double x, double y, COLORREF col); //单剖面 //virtual void Draw(CSection& section,CRect8* rect=NULL); //End /////////////////////////////////////////////////////////////////////////// virtual void PolyLine(CCurveEx& curve, bool bDirectOut=false); virtual void MoveTo(double x, double y); virtual void LineTo(double x, double y); virtual void LineToEnd(); //仅是为了导出其它图件格式时,能使MoveTo、LineTo形成一条连续的曲线 virtual void Draw(CMetaFile& mf); virtual void Draw(CText& text, CCurveEx* pCurveRect = NULL); virtual void Draw(CCircle &circle,COLORREF Color); virtual void Draw(CEllipse &elp,COLORREF Color); virtual void Ellipse(double x1, double y1, double x2, double y2); virtual CPoint GetScreen(double x, double y); virtual CPoint2D GetScreen8(double x, double y); virtual double GetScreenWidth8(double v); virtual double GetScreenHeight8(double v); virtual long GetScreenWidth(double v); virtual long GetScreenHeight(double v); virtual CSize8 GetFontSize(CSize8 sz); virtual void SetCurrentPenWidth(double penWidth); virtual void SetCurrentLayer(LPCTSTR strLayer); virtual void SetCurrentColor(COLORREF colValue); virtual COLORREF GetCurrentColor(void); void PixelToMillimetres(CPoint2D& point); //像素转换为毫米 void PixelToMillimetres(double& x, double& y); //像素转换为毫米 void EnableXyDC(BOOL bEnable); CPoint FloatToLong(CPoint2D& pt); COLORREF m_curColor; double m_curPenWidth; protected: BOOL m_bIsXyDC; //是使用CXyDC还是使用CXyInsertDC CString m_strCurrentLayer; CPointList m_pointListLine; //由MoveTo、LineTo填充,为了输出连续的曲线 //第一个点是由MoveTo设置 };