[计算机软件及应用]第21讲定义直线类和画笔的使用.pptVIP

  • 1
  • 0
  • 约1.1万字
  • 约 43页
  • 2018-03-04 发布于浙江
  • 举报

[计算机软件及应用]第21讲定义直线类和画笔的使用.ppt

[计算机软件及应用]第21讲定义直线类和画笔的使用

VC++程序设计 ——单文档应用程序的开发 第21讲 定义直线类和画笔的使用 2018-3-4 2 本讲主要内容 定义直线类 画笔的使用 3 11.2.2 定义直线类 直线是非封闭图形,根据11.1.3节的设计,直线类CLine派生自线型类CLineType。 和其他的图元类一样,直线类CLine除了具有其基类CLineType定义的属性和行为外,还具有自己的属性和行为,如线段起点、线段终点和“绘制直线”的行为等。 4 【例11-3】 【例11-3】 在例11-2程序的基础上,为绘图程序MyDrawSystem增加直线类的定义,将所绘直线保存到一个合适的动态数据结构中。在重绘窗口时能够显示已经绘制的直线图形。 5 【例11-3】 【编程步骤】 (1)选择Insert|New Class命令,打开New Class对话框,在ClassType中选择“Generic Class”,在Name编辑框中键入“CLine”,在Base Class(es)框中,用鼠标左键单击“Derived From”下面的高亮区,键入“CLineType”。 点击OK,将弹出一个消息框,直接点击“确定”,即生成CLine类的两个支持文件。 6 【例11-3】 (2)为CLine类定义成员变量和成员函数。包括类型为CPoint的、表示直线段的起点和终点的成员变量m_Begin和m_End。另外直线类有“画线”的动作,要增加一个成员函数Draw(),功能是将直线画出来。 考虑到绘图系统中的每种图形都有“绘制”的动作,因此把这个新的成员函数Draw()定义在直线类的父类CLineType中。但由于在CLineType类中该成员函数无法具体定义,因此将其定义为纯虚函数,表明CLineType类是抽象类。 直线类继承下来之后,Draw()函数的功能是根据m_Begin和m_End两点画一条直线。 7 【例11-3】 在LineType.h中添加代码如下。 class CLineType : public CObject { …… public: …… virtual void Draw(CDC* pDC)=0; //纯虚函数——画图函数 }; 8 【例11-3】 在Line.h中添加代码如下。 #include LineType.h class CLine : public CLineType { protected: CPoint m_Begin,m_End; //直线的起点和终点 public: CLine(); CLine(CPoint begin, CPoint end, int linewidth=1, int linetype=PS_SOLID, COLORREF linecolor=RGB(0,0,0)); virtual ~CLine(); void Draw (CDC *pDC); }; 9 【例11-3】 在Line.cpp中添加代码如下。 CLine::CLine() { m_Begin.x=m_Begin.y=0; m_End.x=m_End.y=0; } CLine::CLine(CPoint begin, CPoint end, int linewidth, int linetype, COLORREF linecolor):CLineType(linewidth,linetype,linecolor) { m_Begin = begin; m_End = end; } 10 【例11-3】 CLine::~CLine() {} void CLine::Draw (CDC *pDC) //绘制直线段的成员函数 { pDC-MoveTo(m_Begin); pDC-LineTo(m_End); } 11 【例11-3】 (3)重新整理一下菜单命令响应函数。因为“绘图”菜单下有许多绘制不同图形的命令,单击某个命令后就要根据所要绘制的图形来编写鼠标响应函数,这样在鼠标响应函数中需要判断哪个菜单命令被点击了。 为此,在视图类中添加一个成员变量m_nFigureType,点击不同的菜单项即在菜单响应函数中为其赋一个不同的整数值,用于代表所绘的图元类型。代码如下。 12 【例11-3】 class CMyDrawSystemView : public CView { protected: // create from serialization only …… int m_nFigureType;

文档评论(0)

1亿VIP精品文档

相关文档