- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章程序设计
3.1 设计预期目的
利用MFC类库设计简单的Windows画图程序,实现绘制直线、矩形、圆形等图形功能,并可改变线宽和线的颜色。在设计过程中熟悉并掌握MFC类库的使用,进一步提高C++编程的技能。
3.2 设计思路
本次设计以Microsoft Visual Studio 2008作为开发环境,并利用微软基础类库(MFC)进行程序的设计开发。主要包括菜单栏、工具栏等一系列的设计。由于使用了MFC类库,使得程序的设计负担大大减轻。首先,利用MFC类库生成一个单文档应用程序,该程序已包含最基本的程序属性,例如菜单栏、工具栏、状态栏等;其次为已生成的程序菜单栏和工具栏中分别添加绘图项和绘图工具按钮,并为其添加相应的消息响应处理函数,从而实现不同的绘图功能,如绘制直线、绘制矩形框、绘制圆等;随后加入对以绘制图形的操作到菜单栏,同样添加相应的消息响应处理函数,以实现图形的镜像、移动和线的颜色和宽度调整;最后,对整个程序进行整体编译,在屏幕上输出应用程序,并测试设计效果。本次设计的部分原程序详见附录。
2.3.1 Visual C++库
VisualC++库包括行业标准活动模板库(ATL)、Microsoft 基础类(MFC)库、及各种标准库(如标准C++)库。这些标准库由iostream 库、标准模板库(STL)和C运行时库(CRT)组成。CRT包括已知引起安全问题的函数的安全增强替代项。STL/CLR库为托管代码开发人员引入了STL具有数据封装新功能的C++支持库,其设计意图在于简化面向CLR的程序,这些库减少了程序开发人员的工作量。
学校代码10126学号00861003
本科学年论文
题目基于C++的简单Windows画图程序设计
院系内蒙古大学鄂尔多斯学院
专业名称自动化
年 级2008 级
学生姓名宋 杰
指导教师金 涛
2011年06月20日
学年论文指导教师评阅意见
学生
姓名
宋杰
专业
班级
自动化
学
号
00861003
2008级
(论文)题目
基于C++的简单Windows画图程序设计
CRectangle::CRectangle()
{
strcpy(m_className,"CRectangle");
}
图3.1 主程序流程图
3.4.4CCircle类
MFC中的圆类,同样由图形基类派生,封装了圆的特征。设计中该类的构造函数为:
CCircle::CCircle()
{
strcpy(m_className,"CCircle");
2.4.1 设备上下文
设备上下文是GDI的核心,是用于代表设备连接的一种内部数据结构,该结构的数据规定了GDI函数的工作细节,其内容与具体的输出设备(打印机、显示器等)相对于。另外,通过调用特定的GDI函数可以随时对这些绘图属性进行适当的调整。
2.4.2绘图对象类
GDI的对象类包括对画笔、画刷、位图、字体、调色板及区域等对象的表示和操作。例如CPen类、CBrush类、CCreateRectangle类、CMirro类以及CMove类等。不同的对象类可以完成不同的功能。在MFC中,CGdiObject是图形对象类的抽象基类,所有的GDI对象类都是通过其派生而来的。本次设计中具体用到的对象类将在下文中作进一步阐述。
2.1.2 C++语言的主要特点
1、增加了面向对象的机制,提高了开发大型程序的效率,同时减轻了程序开发人员的负担。
2、数据类型丰富、齐全。标准C++供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型。C++还增加了类这一特殊数据类型的定义机制。
3、语法限制不太严格,程序自由度大。但这既是优点也是缺点,该问题一直为各国程序开发者争论不休。而且,到目前为止没有一个完整的C++标准。
关键词:VC++,MFC,对象,画图
Simple WindowsDrawingProgram Based OnC++
ABSTRACT
This article briefly describesthedesign processfor asimpledrawingprogram based onC++.The design based on the C++language,ahigh-level language, relying on MFC classes in the VC++ development environment designed, can provide the most basic features such as saving and modifying of the drawing, and graphics.The programusing object-oriented technology in the development process,iseasy to expand and maintain.Through this design to a more profound understanding of object-oriented technology and MFC for future development and Visual program design of graphic system provides a good basis for practice.
4、编译系统生成的目标代码质量高,程序执行效率高。具有直接的硬件处理能力。
5、程序可移植性通用性较强。C++中对于类的继承使得程序有着良好的可移植性。
2.2 MFC简介
MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎, MFC是Win API与C++的结合。API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但它不是一种程序开发语言,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,例如VB,VC++,Java,Delhpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现。
3.3 设计流程
主程序与绘图对象类设计流程如图3.1及图3.2所示。
3.4 设计中使用到的主要对象类简介
3.4.1 CPen类
在MFC中画笔的对象,它用来完成绘制线条的任务。初始化时,系统自动提供了一支黑色的默认画笔。也可以进行自定义。创建画笔对象时,需要使用CPen类的构造函数,它的原型为:
CPen(Int style,int width ,COLORREF color);
KEYWORDS:VC++, MFC, object, drawing
第一章引 言
图形是Windows应用程序的重要组成部分,优美的图形界面是所有成功软件的共同特点。而绘图是Windows应用程序的重要功能之一。与面向过程的C语言不同,C++是一门面向对象的,它为程序开发人员提供了极大的便利,因此C++是当前最为流行的基于Windows的语言开发工具之一,其功能的强大,几乎无所不能,程序开发人员多以精通VC++为追求目标。本次设计利用VC++开发简单的画图程序,并进一步了解和应用面向对象程序设计的思想。
nRadius = 0;
}
图3.2 绘图对象类设计流程
3.4.5CMirrorShape类
镜像类,通过该类能够实现图形的镜像操作。该类的声明如下:
class CMirrorShape
MFC是用来编写Windows应用程序的C++类集,该类集是按层次结构组织起来的,其中封装了大部分Windows API函数和Windows控件,它所包含的功能涉及到整个Windows操作系统。MFC不仅为用户提供而且还提供了创建应用程序的组件。使用MFC类库和Visual C++提供的高度可视的应用程序开发工具,可使应用程序开发变得更简单,极大地缩短开发周期,提高代码的可靠性和可重用性[2]。MFC把所有的API函数封装到各种类与对象内,是面向对象与Windows编程的有机结合,真正的体现出了C++这一面向对象机制语言的风格。
style:画笔的样式
width:画笔的宽度
color:画笔的颜色(颜色用RGB值来描述)
3.4.2CBrush 类
CBrush 类中封装有MFC的画刷对象。使用CBrush对象之前要构造它,然后传给需要画刷的CDC成员函数。画刷可以是实线的、阴影线的或图案的。
3.4.3CRectangle类
MFC中的矩形类,由图形基类派生,封装了矩形特征。其设计中使用的构造函数为:
2.4图形设备接口 GDI
Windows操作系统是一种与设备无关的操作系统,因此Windows应用程序在与外设打交道时无须考虑具体的硬件设置。Windows操作系统是通过相应的功能模块来实现设备无关性的,图形设备接口(Graphics块viceInterface,GDI)就是这样的一种功能模块。当Windows应用程序需要在图形输出设备(显示器、打印机、绘图仪)上输出图形时,通过图形设备接口调用图形输出设备的驱动程序来完成输出过程[4]。在VC++中MFC提供了两种用于支持GDI绘图的类,分别为设置绘图属性和绘制图形属性的上下文设备类,以及封装了各种GDI绘图对象的绘图对象类。
2.3 程序开发环境Visual Stdio 2008 简介
Microsoft Visual Studio 2008是微软与2007年底发布的一款集成开发环境,是面向Windows Vista、Office 2007、Web 2.0的开发工具。Visual Studio集成开发环境(IDE)提供了一组工具,它集成了创建、编译、连接和测试Windows应用程序的功能。开发环境提供这一组工具,完全是为了开发和调试更加方便,Visual C++ 2008包括了VisualC++库及VisualC++开发环境。
指导教师
金涛
教师职称
学年
论
文
评语
评定成绩:
指导教师签名:
年月日
基于C++的简单Windows画图程序设计
摘要
本文简要介绍了基于C++的简单画图程序的实验设计过程。该设计以C++这一高级语言为基础,依托VC++开发环境中的MFC类设计而成,可实现最基本的绘图以及图形的保存与修改等功能。程序开发过程中采用了面向对象技术,易于扩充和维护。通过本次设计对面向对象技术及MFC有更深刻的了解,为今后图形系统的开发及可视化程序的设计提供了一个良好的实践基础。
2.3.2 Visual C++开发环境
该开发环境为项目管理与配置(包括更好的支持大型项目)、源代码编辑、源代码浏览和调试工具提供强力支持。该环境还支持IntelliSense,在编写代码时,该功能可以提供智能化切且定于上下文的建议。在VC++编译区,能够自动识别C++语言的关键字和Windows的关键字,有助于编程人员在编写程序时检查错误。其调试工具方法为断点调试、堆栈调试及跟踪调试[3]。
第二章 设计背景
2.1 C++语言的发展背景
2.1.1 C++语言的由来
语言的发展是一个逐步递进的过程,C++ 是直接从 C语言发展过来的。C语言的原型ALGOL 60语言(也称为A语言)。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言,后来由美国国家标准化协会(American National Standards Institute)制定了一个C语言标准,于一九八三年发表。通常称之为ANSI C。但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。为了解决软件危机,在20世纪80年代提出了面向对象的程序设计方法。以C语言为基础,C++应运而生。C++是由AT&T Bell(贝尔)实验室的BjarneStroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。C++ቤተ መጻሕፍቲ ባይዱ由C发展而来的,C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。[1]