C++课设:简单画图教程.docxVIP

  • 53
  • 0
  • 约1.63万字
  • 约 37页
  • 2017-04-08 发布于湖北
  • 举报
简单画图程序 1.基本功能描述 本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。 除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。 2.设计思路 首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。 然后便是画图功能的具体实现。分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。功能四的实时显示功能可以通过调用MouseMove();函数来实现。 这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。 至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。 2.1.程序流程图: 3.软件设计 3.1.设计步骤 1) 打开VS2010,选择新建项目,选中MFC应用程序,标题为CWN_Graphic; 2) 选择单文档结构,其他为默认值,点击完成。 3.2 .界面设计 3.2.1.添加菜单 1) 选择资源视图,鼠标右键,添加,资源; 2)在资源视图中打开添加的菜单资源,将各个功能的名称添加进去并合理安排,并设置好相应的ID,如图2: 图2 编辑菜单及相应ID 3.2.2 .添加工具栏 1)在资源视图下右键选择添加资源,ToolBar; 2)打开新建的工具栏,在上面添加各个小按钮,按钮图像自行画出; 3)将每个按钮的ID与菜单项一一对应起来,如图3: 图3 工具栏样式及ID 3.3.关键功能实现 1) 打开类向导; 2) 为各个菜单项添加消息函数,如图4: 图4 添加消息函数 相关ID、关联变量及响应函数如表1: 表1 相关功能ID 及所关联变量 名称 ID 关联变量 响应函数 点 IDM_DOT m_nDrawType = 1 OnDot() 直线 IDM_LINE m_nDrawType = 2 OnLine() 矩形 IDM_RECTANGLE m_nDrawType = 3 OnRectangle() 椭圆 IDM_ELLIPSE m_nDrawType = 4 OnEllipse() 画笔 IDM_PEN m_Pen = TRUE OnPen() 填充 IDM_FILL m_Fill = TRUE OnFill() 橡皮(小) IDM_ERASER1 - OnEraser1() 橡皮(中) IDM_ERASER2 - OnEraser2() 橡皮(大) IDM_ERASER3 - OnEraser3() 线宽+线型 IDM_LINE_WIDTH - OnLineWidth() 颜色 IDM_Color - OnColor() 3) 按照所需在CWN_GraphicView.h中添加变量并在CWN_GraphicView.cpp中对变量初始化: UINT m_nDrawType = 0; //绘画类型初始为0 CPoint m_ptOldOrigin = 0; //坐标点初始为(0,0) CPoint m_ptNewOrigin = 0; UINT m_nLineWidth = 0; //线宽初始为0 UINT m_EraserWidth = 1; //橡皮初始大小为1 INT m_nLineStyle = 0; //线宽初始为0 BOOL m_Pen = FALSE; //画笔功能未被选中 BOOL m_Eraser = FALSE; //橡皮功能未被选中 BOOL m_LButtonDown

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档