📄 painted.h
字号:
// painted.h : interface of the CPaintLine class
//
#ifndef __CPaintedinterfaceyh
#define __CPaintedinterfaceyh
/////////////////////////////////////////////////////////////////////////////
//定义CPainted类为所有画图类的抽象基类
//利用基类指针操纵其它画图类完成各类图形的绘制
//其它画图类中重定义基类中各函数,完成具体功能
class CPainted : public CObject
{
public:
CPainted();
virtual void Init(CPath* pPath) {};
//改变坐标原点
virtual void ChangeOrigin(CPnt pnt) {};
//就近点判断函数,
//pnt1为鼠标点坐标或给定的起点坐标,
//id为返回点的ID,pnt为返回点的坐标,angle为返回点的姿态角
//此函数只用于得到路径的起点!!
//返回值为TRUE表示有就近点,FALSE表示无就近点
virtual BOOL NearJudge1(CPnt pnt1,UINT& id,CPnt& pnt,double& angle) {return FALSE;};
//就近点判断函数,
//pnt1为鼠标点坐标或计算得到的准终点坐标,
//id为返回点的ID,pnt为返回点的坐标,angle为返回点的姿态角
//此函数只用于得到路径的终点!!
//返回值为TRUE表示有就近点,FALSE表示无就近点
virtual BOOL NearJudge2(CPnt pnt1,UINT& id,CPnt& pnt,double& angle) {return FALSE;};
virtual void GetPostureAngle() {};//计算得到路段的姿态角(外射角)
//返回路段给定端点的姿态角(外射角)
virtual double ReturnPostureAngle(UINT id) {return 0.0;};
virtual CPnt returnattr1() = 0; //返回起点
virtual CPnt returnattr2() = 0; //返回终点
virtual CPnt returncirclecenter() {return CPnt(0,0);}; //返回圆心
virtual double returnradius() {return 0;} ; //返回半径
virtual UINT IsHit1(CPnt& pointBang) {return 0;};//端点是否被选中
//得到路径的绘制起点
//画线时自动取就近的线条端点为起点
//起点为直线端点时return 1;
//起点为圆弧端点时return 2;
//起点为鼠标点时return 0;(即鼠标点距离就近的线条端点超过规定的范围)
//pnt1 为传递的鼠标点坐标,成功则赋值为就近的线条端点坐标,不成功则无意义
//pnt2 成功则为直线的另一端点或圆弧的圆心,不成功则无意义
virtual int GetPathStartnode(CPnt& pnt1, CPnt& pnt2)= 0;
//得到路径的绘制起点
//pnt1 为传递的鼠标点坐标或给定的起点坐标,
//id为返回点的ID,
//pnt为返回点的坐标,angle为返回点的姿态角
//return FALSE表示无就近点
//return TRUE表示有就近点
virtual BOOL GetPathStartnode1(CPnt& pnt1,UINT& id,CPnt& pnt,double& angle){return FALSE;};
//得到路径的绘制终点
virtual BOOL GetPathEndnode(CPnt& pnt1)= 0;
//得到路径的绘制终点
virtual BOOL GetPathEndnode1(CPnt& pnt1) {return FALSE;};
//计算路径在某一终点处的终点姿态角
//pnt为传递的点坐标,angle为返回点的姿态角
//return FALSE表示给定的点不满足路径方程
//return TRUE表示给定的点满足路径方程
virtual BOOL GetEndPostureAngle(CPnt pnt,double& angle){return FALSE;};
virtual void Move(double x_Move,double y_Move) {};
virtual char * toData(char *p_Char) {return p_Char;};
virtual void toChar(char *p_Char){};
virtual void Draw(CDC* pCDC)= 0; //画线或图形
virtual void DragDraw(CDC* pCDC, CPnt& pointDragged) = 0;//动态画线或图形
virtual void MoveDraw(CDC* pCDC, CPnt& p1,CPnt& p2) = 0;//移动画线或图形
virtual void DrawSelected(CDC* pCDC, void* pTemp) {};////被选中时以虚线或阴影画线或图形
virtual void DrawErase(CDC* pCDC, void* pTemp) {};//擦除图形
virtual void DrawErase1(CDC* pCDC, void* pTemp) {};//擦除图形
virtual void DrawSpecialNode(CDC* pCDC) {};//显示断点非相切点
virtual void onup1(CPnt& point1,CPnt& point2,CPnt& point3,CWnd*pWnd)=0;//从属性对话框修改属性后重新画线或图形
virtual void OnDown(CPnt& pointDown) = 0;//第一次按下左键记录起点坐标
virtual void OnDown2(CPnt& pointDown) = 0;//第二次按下左键,记录圆弧中间点坐标
virtual void OnUp(CPnt& pointUp, CWnd* pWnd) = 0;//左键抬起
virtual BOOL IsHit(CPnt& pointBang) = 0;//是否被选中
virtual void IsDblClk(void* pTemp1,void* pTemp2) {};//被双击选中
virtual void GetBoundingRect(double &minx,double &miny,double &maxx,double &maxy) {};//得到边界矩形
virtual void Serialize(CArchive& ar);//串行化
void NormalizePoints(CPnt& pointTopLeft, CPnt& pointBottomRight);//使边界矩形为常态矩形
virtual void Normalize() {};//顶点规格化
//protected:
public:
//DECLARE_DYNAMIC(CPainted)
BOOL m_bReferencePoint;//参考点FALSE表示终点为参考点
BOOL m_bSelect; //TRUE表示图形元素被选中
BOOL m_bSelectStartNode; //TRUE表示图形元素起点被选中
BOOL m_bSelectEndNode; //TRUE表示图形元素终点被选中
CPnt m_pointTemp; //用于保存临时坐标
CPnt m_pointPrimary; //起点坐标
CPnt m_p1;//用于移动的起点坐标
CPnt m_p2;//用于移动的终点坐标
COLORREF m_rgbPrimary; //线条画刷颜色
int m_nWidth; //线条宽度
BOOL m_bhitarc; //TRUE表示圆弧被选中
BOOL m_bFirstMove; //TRUE表示第一次移动
UINT m_uPathId; //路径ID
double m_fPathLimit;//速度限制
double m_fStartHeading;//起点车头方向角(度)
double m_fEndHeading;//终点车头方向角(度)
UINT m_uPathGuideType;//导航方式
UINT m_uPathExtType;//路径扩展类型
UINT m_uFigureType;//图形类型
UINT m_uPathObstacle;//路径障碍物模式
UINT m_uPathHeading;//路径车头方向
UINT m_uStartNodeId;//起点ID
UINT m_uStartNodeType;//起点类型
UINT m_uStartNodeExtType;//起点扩展类型
UINT m_uEndNodeId;//终点ID
UINT m_uEndNodeType;//终点类型
UINT m_uEndNodeExtType;//终点扩展类型
UINT m_uEndNodeState;//终点状态0=相切点1=非相切点2=断点
UINT m_uStartNodeState;//起点状态0=相切点1=非相切点2=断点
double m_StartPostureAngle;//路段起点的姿态角(外射角)
double m_EndPostureAngle;//路段终点的姿态角(外射角)
UINT m_uObjectType;//地图对象的类型0=路径1=建筑2=设备
UINT m_nDeviceId;//设备编号
UINT m_nSomeStatus;//图形所处的状态
UINT m_nStatusNumber;//设备的状态数量
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -