www.pudn.com > my2cadtest07261930.rar > Shape.h, change:2006-07-26,size:3279b


#ifndef _shape_ 
#define _shape_ 
 
#include <windows.h> 
#include "list.h" 
#include "CSuperPoint\\SuperPoint.h" 
 
#include "SetPenAttr.h"          //划笔划刷管理类 
extern CSetPenAttr  *penattrib; 
extern HWND g_hwnd; 
 
class CShape   
{ 
public: 
	enum SHAPE {Line,Rect,Parallelogram,Parallel,Triangle,Polygon,Circle,AnyPolygon,Ellipse,Curve}; 
    enum operstatus {FirstOper,NoFirstOper}; 
 
public: 
	CShape(); 
	virtual ~CShape(); 
 
public: 
     //此组方法都是将图形中的保存点按各参数要求进行移动 
	 
	virtual void MoveSelf(HDC &hdc,int dx,int dy){};  //图形移动拷贝都调用此方法  参数: 设备上下文,X轴距离,Y轴距离     
	virtual void ZoomSelf(HDC &hdc,double scale){};   //图形放大比例 参数: 设备上下文 ,图形放大比例 
    virtual void RotateSelf(HDC &hdc,double angle){}; //图形旋转角度 参数: 设备上下文 ,	        
    virtual void MirrorSelf(HDC &hdc,double angle,CSuperPoint &ptPos){};//图形镜象 
    virtual void EnterOper(HDC &hdc){};    //图形旋转或移动等完成后 檫掉老图绘新图 
     
	virtual void RollBackOper(HDC &hdc);   //右键回滚操作(7.20) 
     
	virtual void PreDraw(HDC &hdc){};    //图形旋转或移动时的动态虚线绘制       
	virtual void DrawSelf(HDC &hdc){};  //图形重汇 
     
	virtual void SavetoEmf(HDC &hdc){};     //图形保存到文件 
    virtual void SavetoTXT(){}; 
    virtual void LoadEmf(){};                //从文件获取图形 
	virtual void LoadTxt(){}; 
	 
 
    virtual void CalcCenterPoint(){};      //计算图形中心点 
	virtual void CalcCenterRECT(){};      //计算图形所在的一块矩形区域 
	 
	CSuperPoint& GetCenterPoint(){return m_centerpoint;}; 
    RECT& GetRECT(){return m_rect;};  
	CSuperPoint* GetPointArr() {return m_point;}; 
	 
	//设置划笔属性 0714添加的方法 
    virtual void SetLOGPEN(LOGPEN &logPen) 
	{ m_penstruct.lopnColor=logPen.lopnColor; 
      m_penstruct.lopnStyle=logPen.lopnStyle; 
      m_penstruct.lopnWidth.x=logPen.lopnWidth.x; 
 	}; 
    virtual void SetLOGBRUSH(LOGBRUSH &logBrush) 
	{ m_brushstruct.lbColor=logBrush.lbColor; 
      m_brushstruct.lbStyle=logBrush.lbStyle; 
      m_brushstruct.lbHatch=logBrush.lbHatch; 
	}; 
     
    //获得划笔属性 (0717添加的方法) 
	LOGPEN GetLOGPEN(){ return m_penstruct;}; 
	LOGBRUSH GetLOGBRUSH(){return m_brushstruct;}; 
 
    int& GetPointCount(){return m_pointcount;}; 
 
	virtual CShape * GetShapeCopy()=0;    //得到图形的拷贝 
     
public:	//图行拾取的相关方法 
    virtual void ClearMark( HDC& hdc) {};         //清除图形拾取标记 
	virtual bool IsBound(CSuperPoint& curPt ) {return false;};	//光标是否到达图像边缘 
	virtual void SetMark( HDC& hdc ){};	   //上线时打标记 
	virtual void UnLock( HDC& hdc ) {};    //解除锁定 
	virtual void Lock( HDC& hdc ){};	   //锁定图形 
    bool IsLock() { return m_selected;};   //图形是否已经选中 
 
	 
protected: 
  CSuperPoint m_point[600];        //保存图形点坐标的数组 
  int m_pointcount;               //点数   
  CSuperPoint m_centerpoint;      //图形中心点 
  CSuperPoint m_copypoint[600];  //备份图形点坐标的数组    
  bool m_selected;   //	是否被选中 
  RECT m_rect;       //图形所在的矩形区域 
  operstatus m_operStatus; 
 
  LOGPEN  m_penstruct;  //图形划笔属性      
  LOGBRUSH m_brushstruct; //图形划刷属性 
  bool m_bdefultPen;      //是否用的默认笔和刷 
public: 
  SHAPE m_whatshape;   //此乃何图也 
}; 
 
#endif