目
录
前言┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈1
1
绘图系统概述┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2
1.1
什么是计算机绘图 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈2
1.2 计算机绘图的发展 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3
1.3 计算机绘图的特点 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3
1.4 微机绘图的应用 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4
2 系统需求分析 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6
2.1 功能分析 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6
2.2 运行环境的分析
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈7
2.2.1 编程环境的选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈7
2.2.2 操作系统的选择┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈8
3 系统方案论证 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈9
4 系统设计┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10
4.1系统总体设计 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10
4.2软件系统详细设计 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10
4.2.1菜单模块
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10
4.2.2绘图模块
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11
4.2.3存储图形文件模块
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈16
4.2.4载入图形文件模块
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈17
5 全局问题探讨┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈20
5.1 鼠标左键按下信息处理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈20
5.2 鼠标移动信息处理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈21
5.3 鼠标左键释放信息处理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈23
6 结论┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈24
7 总结┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈25
参考文献┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈26
附录┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
前
言
图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏幕输出。GDI负责Windows的所有图形输出,包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。
应用程序可以使用GDI创建三种类型的图形输出:矢量输出、光栅图形输出和文本输出。矢量图形输出,矢量图形输出指的是创建线条和填充图形,包括点、直线、曲线、多边形、扇形和矩形的绘制。光栅输出,光栅图形的输出是指光栅图形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。在屏幕上表现为对若干行和列的像素的操作,在打印机上则是若干行和列的点阵的输出。光栅图形输出的优点是速度很快,它是直接从内存到显存的拷贝操作。缺点是需要额外的内存空间。Windows在绘制界面时使用了大量的光栅输出。文本输出与DOS字符方式下的输出不同,Windows是按图形方式输出的。这样,在输出文本时,必须以逻辑坐标为单位计算文本的输出位置,而不是象DOS下以文本行为单位输出文本。这比DOS下的文本输出要难一些。但是,按图形方式输出文本也给文本输出带来很大的灵活性。用户可以通过调用各种GDI函数,制造出各种文本输出效果,包括加粗、斜体、设置颜色等。Windows还提供了一种TrueType(写真字体)。TrueType字体用一组直线和曲线命令及一些参数来描述字体的轮廓。Windows可以通过参数来调整直线的长度和曲线的形状,从而实现对字体的自由缩放。
本论文将针对利用GDI进行矢量图形的输出,使用户能够绘制出点、直线、圆、矩形和多边形等,并能利用鼠标进行直接绘图。
1 绘图系统概述
1.1 什么是计算机绘图
计算机绘图是伴随着计算机及其外围设备的发展而产生和发展起来的一门新兴的绘图技术。这门技术将传统的语言方法与先进的计算机相结合,给生产、科研、管理、国防等领域提供了高速度、高效率和高精度的图形设计及输出方法。它是继印刷、照相技术后产生图形信息的又一重大革命。
简单地说,计算机绘图学是研究如何利用计算机来处理图形的学科,它涉及到多门学科的知识,例如工程制图学基础、数学基础、程序设计方法学和计算机科学及其它学科的专业知识。这些知识间的相互渗透,形成了计算机绘图的内容和系统。
计算机绘图所研究的内容可概括为六个方面:
⑴ 硬件的合理配制;
⑵ 产生图形的原理及各种算法;
⑶ 图形信息的存储技术;
⑷ 图形软件的设计;
⑸ 绘图硬件和软件的接口技术;
⑹ 图形软件的标准化问题。
计算机绘图系统是一系列硬件和软件的集合,是一个以计算机为主体兼有产生图形能
的系统。因此,除了计算机系统配制的一般硬件,软件以外,还必须配备有图形的输出、输入等外部设备。在软件方面要具有实现输出的信息处理系统,一般包括数据库、绘图语言、图形子程序库等。具体地说,一个计算机绘图系统应该具备下列基本功能:
⑴ 输入功能
向计算机输入各种命令和图形数据。
⑵ 计算功能
备有形体设计、分析方法程序库和有关形体描述的图形数据库,应具有坐标的几何变换、曲线曲面的形成及图形间进行交、并、差的运算功能。
⑶ 存储功能
在计算机的内外存储器中能存放图形数据,尤其是存放图形数据之间的相互关系,可根据需要实现有关信息的检索、图形的修改等处理。
⑷ 对话功能
通过图形显示器直接进行人机通讯,实现图形生成过程中人的主动干预。
⑸ 输出功能
在显示器上显示图形或在绘图仪上绘出图形。
计算机绘图可分为两大类:
⑴ 被动式绘图,亦称静态绘图
由人输给计算机全部绘图信息后,计算机控制输出图形,在整个绘图过程中,人们不能再对图形进行干预。因此,用户必须具有一定的编程能力。被动式绘图的优点是用户可以将有关专业的辅助设计、计算机与绘图工作结合在一起进行。
⑵ 交互式绘图、亦称动态绘图
用户通过屏幕菜单在图形终端上绘图,并可对图形随时进行修改、删除编辑,直到对屏幕上的图形满意后,再由绘图仪将图形输出。交互式绘图可省去繁重的编程工作,但首要条件是必须要有一个功能齐全的交互式图形软件包。
1.2 计算机绘图的发展概况
计算机绘图的研究始于50年代。1950年美国麻省理工学院诞生了第一台图形显示器—旋风1号。1958年美国GERBER公司首先把数控机床发展成平板式绘图仪,紧随其后美国CALCOMP公司又将联机的数字记录仪发展成滚简式绘图仪。从此,电子计算机除了能输出数字、文字外,还能直接输出图形。计算机绘图软件系统的发展可从以下四方面概述:
⑴ 图形数据结构
数据结构的发展可分为三个阶段:早期(60年代前),计算机处理数据是自然的,没有
算法,没有结构;中期(60~70年代),数据组织成文件结构,提高了数据处理的速度;近期(70年代后),数据组织成数据库,能为多用户共享,为数据处理网络化奠定了基础。
⑵ 绘图程序设计语言
早期的计算机绘图程序语言依赖于所使用的计算机,因此通用性很差。后来开发的绘图程序语言多嵌入高级语言(FORTRAN、PASCAL、C语言等)中,便于使用和推广。
⑶ 算法
计算机绘图所涉及的算法中,有各种几何变换,二、三维图形的生成及裁剪,曲线、曲面的拟合,几何造型,浓淡、光照处理以及各种几何信息、拓扑信息的运算等内容。
⑷ 图形标准
进入70年代以后,计算机绘图以广泛应用于科学、工程、控制等领域,人们要求计算机图形软件向通用、高级及与设备无关的方向发展,由此提出了图形软件标准化的问题。
1.3 微机绘图的特点
80年代以来,微机像潮水般涌入了计算机市场,以微机为核心的微机绘图系统也随之迅速发展起来。微机绘图着重研究用微机生成和处理图形的原理、方法和技术。在基础方面它与计算机绘图是相通的,但它实用性强,又有自己的许多特点:
⑴
微机绘图的硬件技术大多是以光栅扫描彩色图形显示为基础,采用大规模集成电路CRTC控制芯片和一套逻辑电路。多数可以对硬件进行设置和编程以实现图形显示,并可以与各种外部设备连接,且扩充方便、灵活。
⑵
微机的操作系统简单,使用方便,图形语言都嵌入高级语言中,用户掌握起来容易。
⑶
微机应用面广,发展迅速,技术设备更新快,新的软件产品和图形系统层出不穷,能迅速满足各用户的需要。用户也可以在此基础上方便的进行二次开发。
⑷
微机绘图尽管在图形处理速度和存储空间方面都有局限性,但目前开发的微机都具有联网功能,利用网络技术实现软、硬件资源共享,可以部分弥补它的不足。
⑸
微机图形系统的多数部件都是大规模集成电路芯片,不易发生故障,也不要求过高的运行环境,且价格低廉,因此极受中、小用户的欢迎。
1.4 微机绘图的应用
当前,微机绘图已应用到工业、科技、国防、商业、教育、管理、娱乐以及一般家庭中,广泛渗透到社会生活的各个领域。其主要应用有:
⑴ 计算机辅助设计(CAD)
这是一个最广泛、最活跃的应用领域。微机绘图技术已成功于机械、建筑、电子、船舶、飞机、汽车等计算机辅助设计中。AUTOCAD就是一个成功的微机绘图软件,它提供了强大的绘图功能、良好的交互手段和众多的图形元件、符号,使工程设计人员如虎添翼。
⑵ 模拟与动画
利用微机来产生随时间、温度、速度、受力等因素变化的图形已越来越普遍了。利用这种图形可研究许多对象的变化规律。
⑶ 过程监控
微机绘图系统的过程监控有别于监视电视。它可以把各类传感器采集到的非图像信息加工处理成图像,这样,人对整个过程进行监控时,非常方便。
⑷ 科学运算和事务处理
微机绘图技术可以用来生成数学的、物理的以及经济信息的各类二维和三维图形。
⑸ 办公室自动化
随着信息量的膨胀,办公室工作人员每日要处理的文件、报表、计划成倍的增长。微机绘图系统可以使秘书繁琐的日常工作变得轻松自如,能够对大量杂乱无章的文件数据进行分类、汇总并加工成满足不同要求的、包括图表和文字的报告。
⑹ 测量数据的图形处理
微机绘图被广泛地用来控制地理、地质、航海、气象、人口分布等测绘图图形的处理。中央电视台每天的天气预报和海洋气象预报就是典型的应用实例。
⑺ 艺术和商业
把微机绘图技术与人工智能结合起来,可以进行美术图案、绘画、书法等艺术创作,也可以生成各种精美、动人的商业广告,以吸引顾客,推销商品。
⑻ 计算机辅助教学(CAD)
课堂教学需要模型、挂图,而利用微机绘图系统可以产生十分理想的模型与生动活泼的挂图,有如科教电影,而且远比科教电影制作方便、使用灵活。教师可根据实际情况随意选择与变换所需画面,从而大大提高学生的学习兴趣和学习效果。
2 系统需求分析
2.1 功能分析
作为一个小型绘图系统应该能完成绘图的一些基本功能,如保存文件、绘制直线、矩形、椭圆、多边形等,考虑到小型绘图系统的实际应用,在这里不设置图层,所有图元都是直接覆盖,另外为了绘图的方便,需要设置一个铅笔工具,使用户能直接在画布上用鼠标绘制任意图形。我设计的《小型绘图系统》的功能模块如下图所示: