www.pudn.com > VoronoiDAC.rar > Shape.h, change:2007-01-12,size:3667b


#ifndef _H_SHAPE 
#define _H_SHAPE 
 
#define MAXSITENUM 2000 
 
/*typedef struct tagVor 
{ 
	Site *FirstSite; 
}Vor;*/ 
 
 
 
/*typedef struct tagPoint  
{ 
	float x;  //横坐标 
	float y;  //纵坐标 
}Point;*/ 
 
//图形参数类 
class CGraphPara 
{ 
public: 
	CGraphPara(); 
 
	~CGraphPara() 
	{ 
		delete m_lColorList; 
	} 
public: 
	COLORREF GetColor(int n);  //得到第n种颜色的实际颜色 
protected: 
	int m_iColorNumbAll;  //总的颜色数 
	int m_iColorNumb;  //系统当前具有的颜色数 
	long *m_lColorList;  //用来存储颜色列表的数组 
private: 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
//画图类 
///////////////////////////////////////////////////////////////////////////// 
class CDraw : public CObject 
{ 
public: 
	CDraw() 
	{ 
		Init(); 
	}  //默认构造函数 
 
	CDraw(int ID, short ColorPen = 1, short ColorBrush = 0, short LineWide = 2, 
		  short LineType = PS_SOLID, BOOL Delete = FALSE) 
	{ 
		m_sColorPen = ColorPen; 
		m_sColorBrush = ColorBrush; 
		m_sLineWide = LineWide; 
		m_sLineType = LineType; 
		m_iID = ID; 
		m_bDelete = Delete; 
		//m_pGraphPara = new CGraphPara(); 
		Init(); 
	} 
 
	void Init() 
	{ 
		m_iColorNumbAll = 100;  //最多具有100种颜色 
		m_lColorList = new long[m_iColorNumbAll]; 
		m_iColorNumb = 6; 
		//初始化颜色 
		m_lColorList[0] = RGB(0, 0, 0);  //黑色 
		m_lColorList[1] = RGB(255, 255, 255);  //白色 
		m_lColorList[2] = RGB(255, 0, 0);  //左边线的颜色,红色 
		m_lColorList[3] = RGB(0, 255, 0);  //右边线的颜色,绿色 
		m_lColorList[4] = RGB(0, 0, 255);  //轮廓线的颜色,蓝色 
		m_lColorList[5] = RGB(120, 200, 20); 
	} 
 
	COLORREF GetColor(int n);  //得到第n种颜色的实际颜色 
	 
	//DrawMidel:直线绘制方式。0-正常显示,1-特殊显示,2-用颜色绘制 
	virtual void Draw(CDC *pDC, int DrawModel, short Color) = 0; 
	int GetID() 
	{ 
		return m_iID; 
	} 
	BOOL IsDelete() 
	{ 
		return m_bDelete; 
	} 
//	virtual CDraw& operator = (CDraw& rDraw); 
	virtual void Serialize(CArchive& ar); 
	 
protected: 
	short m_sColorPen;  //笔色 
    short m_sColorBrush;  //填充颜色 
	short m_sLineWide;  //线宽 
	short m_sLineType;  //线型 
	BOOL m_bDelete;  //是否处于删除状态 
	int m_iID;  //图形元素唯一标识号 
public: 
    int m_iColorNumbAll;  //总的颜色数 
	int m_iColorNumb;  //系统当前具有的颜色数 
	long *m_lColorList;  //用来存储颜色列表的数组 
}; 
 
//顶点类 
class CPt : public CDraw 
{ 
public: 
	CPt(){} 
	CPt(float X, float Y, int ID = 1, short ColorPen = 1, short ColorBrush = 0,  
		short LineWide = 2, short LineType = PS_SOLID, BOOL Delete = FALSE) :  
	    CDraw(ID,ColorPen, ColorBrush, LineWide, LineType, Delete) 
	{ 
		m_fX = X; 
		m_fY = Y; 
	} 
	virtual void Draw(CDC *pDC, int DrawModel, short Color); 
	virtual void Serialize(CArchive& ar); 
	CPt* operator = (CPt *rPT); 
public: 
	DECLARE_SERIAL(CPt) 
	float m_fX;  //横坐标 
	float m_fY;  //纵坐标 
 
public: 
	float GetX() 
	{ 
		return m_fX; 
	} 
	float GetY() 
	{ 
		return m_fY; 
	} 
}; 
 
//直线类 
class CLine : public CDraw 
{ 
public: 
	CLine(){} 
	CLine(float X1, float Y1, float X2, float Y2, int ID = 1, short ColorPen = 1,  
		short ColorBrush = 0, short LineWide = 1, short LineType = PS_SOLID, BOOL Delete = FALSE) : 
	    CDraw(ID, ColorPen, ColorBrush, LineWide, LineType, Delete) 
	{ 
		m_fX1 = X1; 
		m_fY1 = Y1; 
		m_fX2 = X2; 
		m_fY2 = Y2; 
	} 
    virtual void Draw(CDC *pDC, int DrawModel, short Color); 
	virtual void Serialize(CArchive& ar); 
protected: 
	DECLARE_SERIAL(CLine) 
	float m_fX1, m_fY1, m_fX2, m_fY2;  //直线起点和终点作标值 
//public: 
//	LONG m_colorArray[6] = {RGB(0, 0, 0), RGB(255, 255, 255),  
//	RGB(255, 0, 0), RGB(0, 255, 0), RGB(0, 0, 255), RGB(120, 200, 20)}; 
}; 
 
 
#endif