- 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
您可能关注的文档
- 某某大学学生公寓可研课题.doc
- 2人教版小学四年级巨人的花园教程.ppt
- 某平台投资用户规范管理暂行办法课题.docx
- 【走向高考】2017高考化学一轮复习第1章化学计量在实验中的应用第2节物质的量在化学实验中的应用教程.ppt
- 进贤宏兴运输有限公司内部控制中的人员控制存在的问题和解决方法课题.doc
- 某项目光伏电站风光互补项目销售承包合同(路灯)课题.doc
- 【走向高考】2017高考化学一轮复习第一部分必考部分第1章化学计量在实验中的应用章末专题复习教程.ppt
- 继电保护二次回路判断题和问题库课题.doc
- 某校区工程室外后三通工程施工组织设计课题.docx
- 管道工程图形符号大全课题.doc
- 2026及未来5年陶瓷伞筒项目投资价值分析报告.docx
- 2026及未来5年打卷机项目投资价值分析报告.docx
- 2026及未来5年汽水静态混合加热器项目投资价值分析报告.docx
- 2026及未来5年海瓜子项目投资价值分析报告.docx
- 2026及未来5年汽车制动器毛坯项目投资价值分析报告.docx
- 2026及未来5年后减缓冲块项目投资价值分析报告.docx
- 2026及未来5年无反射玻璃蒙砂粉项目投资价值分析报告.docx
- 2026及未来5年沉淀硬化型不锈钢锻件项目投资价值分析报告.docx
- 2026及未来5年输送带网机项目投资价值分析报告.docx
- 2026及未来5年彩色书写纸项目投资价值分析报告.docx
原创力文档

文档评论(0)