【vb精品源码栏目提醒】:网学会员vb精品源码为您提供第12章_综合设计实例--简单矢量绘图程序 - 其它资料参考,解决您在第12章_综合设计实例--简单矢量绘图程序 - 其它资料学习中工作中的难题,参考学习。
第三部分 Visual C环境下Windows程序开 发概述 第11章 Windows 编程初步 第12章 综合设计实例-简单绘图程序 1 第12章 综合设计实例-简单绘图程序本章要点: 功能需求描述 系统的分析与设计 程序实现过程 2 建立一个简单绘图程序的具体过程,利用MFC 单文档程序框架,可以使用鼠标实现矢量图形 元素的交互式绘制,逻辑上设计图形对象基 类,然后派生各具体图元类,并实现虚函数。
本章的内容将会涉及本书面向对象部分的主要 知识点,包括自定义类、构造函数、析构函 数、继承、虚函数、模板、STL等。
3 12.1 功能需求 要求设计完成一个简单的矢量绘图系统,界面 实现的界面布局如12.1所示。
图12.1 软件界面布局图 4具体要求如下:(1)要求用MFC单文档程序框架(SDI)实现;(2)可以通过选择菜单项或工具箱的按钮来选择绘 图工具类型,在绘图区绘制线段、矩形、圆基 本图形元素;(3)可以文本格式保存绘制的图形; 5 12.2 分析与设计12.2.1图形元素的类逻辑设计 首先对各种图形元素(图元)进行分析,可以 发现各种图形元素具有一些相同的属性和操作 功能,如图形元素的位置、颜色、线形、线宽 等基本属性,还有绘制图形、生成格式字符串 等操作,把这些共性的属性和操作提炼出来, 就可以得到图元基类CShapeObject,在此基础 上就可以派生出具体的图元子类。
6图12.2 图元类设计图 7 12.2.2图元的存储管理图12.3 图元存储管理模型 8 本例存储到磁盘的图形文件的格式只简单包含了图元的 类型标志字符串和几何数据,以行为单位,格式如下:类型标志 x坐标值1 y坐标值1 其中类别标志分为LINE、RECT、CIRCLE三种,分别 代表线段、矩形、圆三种类型。
LINE和RECT类型后有4个数值,以空格分开,分别为 起点和终点x、y坐标。
CIRCLE类型后跟圆的中心坐标的和半径值,具体格式 可如下例:LINE 145 114 168 123RECT 330 110 421 167RECT 428 182 517 242CIRCLE 217 307 57.80…… 9 12.2.3图元的绘制操作 图元的交互式绘制主要利用鼠标的三个消息响应机制来 实现,首先选择某种图元类型,然后再绘图区某个位置 按下鼠标左键,记录为起点,然后拖动鼠标,此时会以 虚线模式绘制一个临时的图元,当鼠标左键在某个位置 抬起时,此为终点,就根据起点和终点坐标生成一个对 应类型的图元对象,然后把指针插入到容器中。
基于MFC文档/视图的设计模式,应该把图元容器对象 定义在文档类中,交互操作和绘制都在视图类中实现。
绘制操作的实质就是对容器中的所有对象指针遍历一 次,然后逐个调用虚函数Draw来实现图元对象的绘 制,充分体现出面向对象程序设计中的运行时多态机制 的优点。
10 12.3 程序实现12.3.1建立SDI应用程序框架 开 发 绘 图 程 序 的 第 一 步 是 使 用 VC6.0 的 MFC AppWizard来建立绘图程序的基本框架,具体步骤为:(1)启动VC6.0程序,在File菜单中选择New菜单项,打 开新建对话框。
( 2 ) 选 择 Projects 选 项 卡 , 从 项 目 类 型 列 表 中 选 择 MFC AppWizardexe类型,确定Location选择了磁盘上合适 的位置,在Project name框中输入绘图程序的名字,这 里设定为MyDraw,其他默认,然后选择OK按钮。
11(3)在弹出的MFC AppWizard(MFC应用生成向 导)-Step1对话框中,选择Single Document 单 选按钮,确保语言为“中文(中国)” 来生成中 文界面。
(4)单击Next按钮,在后续的向导对话框中都保持 默认,最后在MFC AppWizard Step6的对话, 选择Finish按钮,然后在接下来的New Project Information对话框中选OK按钮。
12 12.3.2建立菜单和工具条1.添加菜单资源 选 择 Resource View 窗 口 , 展 开 “ MyDraw resources”节点,显示如图12.4所示,然后打开 Menu项下的IDR_MAINFRAME菜单资源,然 后插入一个“工具T”主菜单,然后再添加如 表12.1所示的各菜单项。
添加完菜单后的效果应该如图12.4右侧所示