RoundRect.h
上传用户:lj3531212
上传日期:2007-06-18
资源大小:346k
文件大小:4k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // RoundRect.h: interface for the CRoundRect class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_ROUNDRECT_H__738DF60E_5192_4326_A226_37022B681F75__INCLUDED_)
  5. #define AFX_ROUNDRECT_H__738DF60E_5192_4326_A226_37022B681F75__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "Shape.h"
  10. class CRoundRect : public CShape  
  11. {
  12. DECLARE_SERIAL(CRoundRect)
  13. /////////////////////////////////////
  14. public:
  15. public:
  16. CRoundRect();          
  17.     CRoundRect(COLORREF color,int penWidth,float angle);
  18. CRoundRect(CRoundRect * const pRectangle);
  19.     virtual ~CRoundRect(); 
  20. public:
  21. //virtual operations
  22. virtual void Serialize( CArchive& );
  23. virtual void SetPtData(CArray<float,float>& flArrayX,CArray<float,float>& flArrayY);
  24. virtual void GetPtData(CArray<float,float>& flArrayX,CArray<float,float>& flArrayY);
  25. virtual void Draw(CDC *pDC,COLORREF color,COLORREF fillColor,int penWidth);
  26. virtual void DrawPoints(CDC *pDC,COLORREF color);
  27. virtual void DrawPointsCutTo(CDC *pDC,COLORREF color,CFlRect m_rectFrom,CRect m_rectTo);
  28. virtual int IsPointinRegion(POINT point);
  29. virtual void CreatGraph(CArray<CPoint,CPoint>& ptArray,int nPenWidth,COLORREF color,COLORREF fillColor,SHAPE_FILLSTYLE nStyle=_shape_none_fill);
  30. virtual void CreatGraph(CArray<float,float>& flArrayX,CArray<float,float>& flArrayY,int nPenWidth,COLORREF color,COLORREF fillColor,SHAPE_FILLSTYLE nStyle=_shape_none_fill);
  31. virtual void DrawCutToRect(CDC *pDC,COLORREF color,COLORREF fillColor,int penWidth,CFlRect m_rectFrom,CRect m_rectTo);
  32. virtual void Move(CDC *pDC,float stepx,float stepy);
  33. virtual void PartMove(CDC *pDC,float PrevX,float PrevY,float CurX,float CurY);
  34. virtual void Rotate(CDC *pDC,float CX,float CY,float flAngle);
  35. virtual void Magnify(CDC *pDC,float CX,float CY,float flScale);
  36. //在矩形内上下反转
  37. virtual void TopToBottom(CDC* pDC,CRect rect);
  38. //在矩形内左右反转
  39. virtual void LeftToRight(CDC* pDC,CRect rect);
  40. virtual CShape* GetCopy();
  41. virtual void ExPort(FILE* outStream);//增加导出txt功能时用
  42. virtual void ImPort(FILE* InStream);
  43. virtual CString GetNameString();
  44. virtual GRAPH_SHAPE_TYPE GetShapeKind(){
  45. return _shape_RoundRect;
  46. }
  47. virtual void RefreshData(bool bRefresh);
  48. virtual int IsInRect(CRect rect);
  49. virtual CRect GetBoundaryRect();
  50. virtual CPoint GetCenterPoint();
  51. virtual int GetPtState(float flx,float fly,float flRate);
  52. virtual float GetSelectLineRate();
  53. //Begin of deletion
  54. //For Project GraphSoft,delete by FNST)Xiagongli 2004.3.31
  55. //virtual int GetPointNum(){
  56. // return 4;
  57. //}
  58. //end of deletion
  59. protected: 
  60. void RoundRectangle(CDC *pDC,CPoint LeftTop,CPoint RightBottom,COLORREF color);
  61.     int CircleStateToRect(CRect rect,CPoint ptCenter,float flRadius);
  62. ////////////////////
  63. private:
  64. //save(start)
  65. float m_flFirstx;
  66. float m_flFirsty;//(m_flLTx,m_flLTy)-----左键按下第一点
  67. float m_flSecondx;
  68. float m_flSecondy;//(m_flRTx,m_flRTy)-----左键按下第二点
  69. float m_flThirdx;
  70. float m_flThirdy;//(m_flRBx,m_flRBy)-----左键按下第三点
  71. //save(end)
  72. //not save(start)
  73. //temp(start)
  74. float m_flFirstxTemp;
  75. float m_flFirstyTemp;
  76. float m_flSecondxTemp;
  77. float m_flSecondyTemp;
  78. float m_flThirdxTemp;
  79. float m_flThirdyTemp;
  80. float m_flForthx;//用来保存第四个坐标点的信息,主要的用处在编辑图形时为了减少误差积累
  81. float m_flForthy;
  82. float m_flForthxTemp;//用来保存第四个坐标点的信息,主要的用处在编辑图形时为了减少误差积累
  83. float m_flForthyTemp;
  84. //temp(end)
  85. //not save(end)
  86. };
  87. #endif // !defined(AFX_ROUNDRECT_H__738DF60E_5192_4326_A226_37022B681F75__INCLUDED_)