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