- 28
- 0
- 约6.27千字
- 约 12页
- 2019-01-26 发布于安徽
- 举报
.
..
VC++程序设计实验报告
实验目的
掌握MFC编程
实验内容
用MFC向导创建单文档应用程序,一个简单的画图程序。
使用C++语言实现
使用VC++6.0集成开发环境开发
使用MFC应用程序开发框架
三、实验步骤
基本功能描述
1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。
2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。
设计思路
1. 对需要用到的变量进行初始化。
2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。
3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。
4. 选择图形或其它属性,可进行下一次绘制。
软件设计
A 设计步骤
1.创建单文档
创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。
图1 创建工程
图2 创建单文档
图3 生成类
2.编辑菜单
添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。
图4 添加菜单项
图5 设置菜单ID
表1 菜单项对应ID
菜单名
ID
菜单名
ID
菜单名
ID
直线
ID_LINE
线宽1
ID_W1
实线
ID_SOLID
矩形
ID_RECT
线宽2
ID_W2
虚线
ID_DASH
椭圆
ID_ELLIPSE
线宽3
ID_W3
点线
ID_DOT
颜色
ID_COLOR
线宽4
ID_W4
点段线
ID_DASHDOT
填充色
ID_FILLCOLOR
线宽5
ID_W5
建立类向导,在视图类CDrawView中,对各菜单项添加对应的COMMAND消息处理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,如图6所示。
图6 建立类向导
3.在相应消息函数处添加代码,实现其功能
建立类向导,在视图类CDrawView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码。
B 关键功能实现
1.选择要绘制的图形
在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在OnPaint()函数里添加3个if语句的代码来这实现这三个图形的绘制:当选择画直线时,shape=1,则执行绘制直线代码,当选择画矩形时,shape =2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。
2.改变线宽
在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线宽处用w表示,则改变w的值即改变了画笔的粗细。选择菜单绘图→线宽选择划线宽度值,此时所选的线宽值就赋给线宽变量w。若不选择线宽值,则w=1(即默认线宽值为1)。
3.改变线型
在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线型处用penstyle表示,则改变penstyle的值即改变了画笔的类型。选择菜单绘图→线型选择线型,此时所选的线型就赋给线型变量penstyle。若不选择线型值,则penstyle=ID_SOLID(即默认线型为实线)。
4.改变线色
在OnPaint()创建的画笔中,pen.CreatePen(penstyle,w, m_nColor),线的颜色处用m_nColor表示,则改变m_nColor即改变了画笔的颜色。选择菜单绘图→颜色,会弹出通过WM_COLORREF从系统中引入的颜色选择对话框,选择颜色后,点击确定则相应颜色值就赋给变量m_nColor,此时画笔的颜色就会发上变化。若不选择颜色,则默认(线)颜色为黑色。
4.改变填充色
在OnPa
您可能关注的文档
最近下载
- 新改版教科版四年级上册科学全册精编知识点(背诵用).pdf
- 武汉大学 2013 – 2014 学年第一学期《线性代数 B》(工科 54 学时) 期末试题.docx VIP
- 2024年邮政营业员高级技师资格证考试题库及答案2.docx VIP
- 温泉度假酒店员工培训手册.pdf VIP
- 铀矿石浓缩物分析方法第1部分硫酸亚铁还原重铬酸钾滴定法测定铀.pdf VIP
- 2024年邮政营业员高级技师资格证考试题库及答案6.docx VIP
- 自体输血管理制度与技术规范.docx
- 武汉大学 2012 – 2013 学年第二学期《线性代数 B》(工科 54 学时) 期末试题.docx VIP
- 皖2014J301民用建筑常用饰面.pdf VIP
- 2025年全国甲卷英语高考试题及答案.docx VIP
原创力文档

文档评论(0)