⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visualobject.h

📁 The application wizard has created this SoccerDoctor application for you. This application not onl
💻 H
字号:
#ifndef _VISUALOBJECT_H_
#define _VISUALOBJECT_H_

/************************************************************************/
/*                        CVisualObject Class                           */
/************************************************************************/
class CDisplayer;
class CVisualObject{ // 可是物体的公用接口
public:
	CVisualObject(CDisplayer* pDisplayer) : _pDisplayer(pDisplayer),_bSelected(false) {}
	virtual ~CVisualObject(void);
	virtual void Draw(CDC* pDC); // 在pDC上画出自己
	virtual void OnLButtonDown(UINT nFlags,const CPoint& p); // 拾取
	virtual bool OnMouseMove(UINT nFlags,const CPoint& p); // 拖动,有效返回true
	virtual bool Selected(); // 是否被拾取到
	virtual CString ToString(); // 用来显示hint
protected:
	CDisplayer* getDisplayer() const { return _pDisplayer; }
	bool _bSelected;
private:
	CDisplayer* _pDisplayer;
};
/************************************************************************/
/*                        CVisualLine Class                             */
/************************************************************************/
class CVisualLine : public CVisualObject {
public:
	CVisualLine(CDisplayer* pDisplayer,const CPoint& p) 
		: CVisualObject(pDisplayer),_p1(p),_bP2Valid(false){}
	virtual void Draw(CDC* pDC);
	virtual void OnLButtonDown(UINT nFlags,const CPoint& p);
	virtual bool OnMouseMove(UINT nFlags,const CPoint& p);
	virtual CString ToString();
private:
	bool OnLine(const CPoint& p);
	CPoint _p1;
	CPoint _p2;
	bool _bP2Valid;
	double _dLen; // 线的长度
	double _dAngle; // 线的角度
};

/************************************************************************/
/*                        CVisualPoint Class                            */
/************************************************************************/
class CVisualPoint : public CVisualObject {
public:
	CVisualPoint(CDisplayer* pDisplayer,const CPoint& p)
		: CVisualObject(pDisplayer),_pt(p){}
	virtual void Draw(CDC* pDC);
	virtual void OnLButtonDown(UINT nFlags,const CPoint& p);
	virtual bool OnMouseMove(UINT nFlags,const CPoint& p);
	virtual CString ToString();
private:
	CPoint _pt;
};
/************************************************************************/
/*                        CVisualRect Class                             */
/************************************************************************/
class CVisualRect : public CVisualObject {
public:
	CVisualRect(CDisplayer* pDisplayer,const CPoint& p) 
		: CVisualObject(pDisplayer),_p1(p),_bRectValid(false){}
	virtual void Draw(CDC* pDC);
	virtual void OnLButtonDown(UINT nFlags,const CPoint& p);
	virtual bool OnMouseMove(UINT nFlags,const CPoint& p);
	virtual CString ToString();
private:
	bool OnRect(const CPoint& p);
	bool OnLine(const CPoint& p1,const CPoint& p2,const CPoint& p); // 判断p是否在以p1,p2为端点的线段上
	CPoint _p1;
	CRect _rect;
	bool _bRectValid;
};
/************************************************************************/
/*                        CVisualCircle Class                           */
/************************************************************************/
class CVisualCircle : public CVisualObject {
public:
	CVisualCircle(CDisplayer* pDisplayer,const CPoint& p) 
		: CVisualObject(pDisplayer),_center(p),_bRadiusValid(false){}
	virtual void Draw(CDC* pDC);
	virtual void OnLButtonDown(UINT nFlags,const CPoint& p);
	virtual bool OnMouseMove(UINT nFlags,const CPoint& p);
	virtual CString ToString();
private:
	bool OnCircle(const CPoint& p);
	CPoint _center;
	long _radius;
	bool _bRadiusValid;
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -