网络工程 091 班 路林生 2010 年 12 月 30 日 一、简单的绘图应用程序 1.1. 设计内容 能够利用所学的基本知识,设计一个简单的绘图应用程序,具有以下功能:①具备基本的图形绘制功能:直线、圆、矩形;(必须实现的功能)②编辑功能包括:具有橡皮拉线功能,允许鼠标拖放,能双击选中图形元素,能删除和剪切图形元素,能撤消最近的修改等;(这部分功能选做)③数据保存功能:能够把图形数据保存到文件中必须实现的功能)。 1.2.设计目的 ① 了解 Windows 编程的基础知识,掌握 MFC 应用程序的基本知识; ② 基本掌握面向对象程序设计的基本思路和方法; ③ 掌握用VC++开发应用程序的的一般步骤和方法; 1.3.设计要求 ① 用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释; 2. 详细设计与实现 2.1. 基本思路 单文档,添加三个菜单项,直线、矩形、圆、添加一个变量区分点击相关菜单项,添加三个变量,一个记录起点,一个记录终点,一个记录类型。创建序列化类,保存图形信息。 2.2. 设计步骤及主要代码 //主要函数代码 afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnCancelMode(); afx_msg void OnDrawrectangle(); afx_msg void OnDrawround(); afx_msg void OnDrawline(); //保存起点 void CTestdrawView::OnLButtonDown(UINT nFlags, CPoint point) { m_ptOrigin=point; CView::OnLButtonDown(nFlags, point); } //绘图 void CTestdrawView::OnLButtonUp(UINT nFlags, CPoint point) { CClientDC dc(this); CRect rectEllipse(m_ptOrigin,point); int r=(int)sqrt((point.x-m_ptOrigin.x)*(point.x-m_ptOrigin.x)+ (point.y-m_ptOrigin.y)*(point.y-m_ptOrigin.y));//定义圆的半径 CRect rect(m_ptOrigin.x-r,m_ptOrigin.y-r,m_ptOrigin.x+r,m_ptOrigin.y+r); dc.SelectStockObject(NULL_BRUSH);//定义一个正方形 switch(m_nType) { case 1: dc.Rectangle(rectEllipse);//矩形 break; case 2: dc.Ellipse(rect);//圆 //dc.Arc(rectEllipse,m_ptOrigin,m_ptOrigin); break; case 3: dc.MoveTo(m_ptOrigin);//直线 dc.LineTo(point); break; } } //序列化保存 //定义的类支持序列化,分为五步: 1.从CObject 或其派生类...