《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc

上传人:仙人指路1688 文档编号:2391472 上传时间:2023-02-17 格式:DOC 页数:69 大小:1.07MB
返回 下载 相关 举报
《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc_第1页
第1页 / 共69页
《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc_第2页
第2页 / 共69页
《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc_第3页
第3页 / 共69页
《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc_第4页
第4页 / 共69页
《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc》由会员分享,可在线阅读,更多相关《《基于GDI》2D图形软件开发方法初探-2D几何画板毕业论文.doc(69页珍藏版)》请在三一办公上搜索。

1、基于GDI+2D图形软件开发方法初探2D几何画板摘要基于GDI2D图形软件开发方法初探2D几何画板,是采用Microsoft Visual C 2.0为开发语言,Microsoft .NET Framework 2.0为支撑平台开发的用于研究二维图形的图形软件。2D几何画板的开发,主要是研究GDI+技术在二维图形软件中的开发方法的探索。在该系统中,实现一些基本的图形绘制,如点、线、圆的绘制,及一些自定义图形的绘制,如多边形,曲线,带外接圆的三角形的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关

2、的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。2D几何画板除了实现基本的图形的绘制外,还实现了共点运动,可以动态的观察二维空间中关联对象的共点运动,当某个对象的相关属性改变时,对其他关联对象的影响;还可以精确的定位相关对象的相关属性,如圆的半径,曲线的张力等。本论文首先介绍了项目开发的背景,相关开发工具、开发语言和平台的介绍,然后是系统的总体设计,系统的详细设计,包括窗口界面,图形绘制模块,测量模块,2D函数图形绘制模块,序列化模块的设计。关键词:面向对象;命名空间;序列化;GDI+;图元GDI+ Based

3、 Development of 2D Geometers SketchpadABSTRACTGDI+ Based Development of 2D Geometers Sketchpad ,as GDI + on a two-dimensional graphics technology in software development methods of exploration, from basic graphics rendering, the sequence of elements of the object and function of two-dimensional imag

4、ing is of great significance. The system has basic graphics rendering, elements of the sequence, two-dimensional mapping function graphics, objects associated elements of movement points for the observation of the dynamic nature of objects.Basic elements, including point, line, round, curves, triang

5、les, polygons, rectangular, diamond, and these special elements derived from the basic elements, such as the triangle with circumcircle.Key words: Object-Oriented;Naming Space; Serialization; GDI +;Metafile毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的

6、研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要

7、(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不

8、准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它目 录1引言12开发背景32.1当代信息技术的发展现状32.1.1当代信息技术的发展32.1.2计算机处理能力的发展32.2 .NET框架的简介42.2.1 .Net框架简介42.2.2 .Net框架的组成42.2.3.Net框架的特性52.2.4 .Net的名字空间62.2.5 .Net2.0平台介绍72.3 C简介72.3.1什么是C#72.3.2

9、C#的特点82.3.3 C#的语言特性92.4 GDI+简介102.4.1什么是GDI+102.4.2 GDI+的体系结构图112.4.3 GDI+的构成112.4.4 GDI+的新特色123系统总体设计153.1系统总体结构153.2系统模块结构163.3系统类结构163.4系统运行环境193.5规格说明194系统窗体界面设计214.1设计原则214.2界面详细设计215图形绘制模块设计255.1基类255.2点265.3线段265.4矩形275.5正方形285.6菱形285.7圆295.8任意三角形305.9等腰三角形315.10等边三角形325.11直角三角形335.12带外接圆的三角形

10、345.13任意多边形365.14文字385.15曲线395.16选取406 2D函数图形绘制模块设计436.1实现原理436.2公式分析器436.3绘制图形467序列化模块设计517.1序列化类型517.1.1 Shallow Serialization517.1.2 Deep Serialization517.2持久存储527.3按值封送527.4基本序列化537.5选择性序列化547.6自定义序列化557.7序列化过程的步骤577.8版本控制577.9序列化规则588结 论59参考文献61致 谢631引言用GDI+开发一个2D几何画板,主要实现一些基本的图形绘制,如点、线、圆的绘制,及一

11、些自定义图形的绘制,如多边形,射线,直线的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。2开发背景2.1当代信息技术的发展现状2.1.1当代信息技术的发展以网络化、数字化、多媒化和智能化为代表的现代信息技术,正在改变人们传统的生活、学习和工作方式,影响教育的内容与方法。当代信息技术的发展,特别是以Internet为核心的网络技术的发展和应用,使整个社会步入全新的网

12、络经济时代,电子商务作为网络经济的重要载体,己经成为信息时代市场发展的一个重要标致,发展电子商务则成为当今世界商务活动的关键推动力,同时电子商务也是各类组织在结构,运营和管理方面发生根本变革的催化剂,使得企业之间的竞争规则和面临的营销环境增添了许多新内容,随着电子商务技术的日趋完善和电子商务市场环境的日趋成熟,电子商务已经成为越来越多的企业和行业追求和向往的交易模式.两大信息技术成了一个从工业文明向信息时代过渡的重要的技术杠杆。计算机出现以后,还没有带来那么大的变化,到计算机发展到多媒体的时候才发生了质的变化。因为计算机仅仅是“计算机”的时候,所用的都是计算机语言,很难掌握。计算机发展到多媒体

13、了,现在已经是超越了单纯的计算机语言的时代。多媒体的出现就把文字、声音、图像、三维动画全部变成数字信息,融为一体。多媒体全方位拓展人的观感,是人的观感的延伸,容易让人掌握,所以到了多媒体时代。当多媒体技术成熟以后,掌握多媒体技术的人和多媒体计算机一起构成了信息时代的新细胞,信息社会的新细胞。多媒体和信息高速公路以想象不到的惊人的速度在改变着我们的工作方式、交流方式、学习方式、思维方式、生活方式。信息化的时代是世界发展的大趋势。整个世界的发展趋势就是:世界越来越步人信息时代,国家越来越走向国民经济信息化。2.1.2计算机处理能力的发展自1666年,在英国Samuel Morland发明了一部可以

14、计算加数及减数的机械计数机,到1984年,日本计算机产业着手研制“第五代计算机”,计算机处理能力已经从简单的机械计数变成人工智能。第五代计算机把信息采集、存储、处理、通信和人工智能结合一起具有形式推理、联想、学习和解释能力。它的系统结构突破传统的冯诺依曼机器的概念,实现高度的并行处理。2.2 .NET框架的简介2.2.1 .Net框架简介.NET框架(Framework)是一个开发、部署和运行.NET应用的环境,包括了ASP.NET、公共语言运行时环境(CLR)以及.NET 框架类。.NET框架的目的是使Windows应用程序更加可靠并提供给应用程序更大程度的安全性,简化Web应用程序和服务的

15、开发,提供独立的一套库,使其可用于多种语言。2.2.2 .Net框架的组成1、公共语言运行时此名称不能准确反映它的全部功能。实际上,公共语言运行时在组件的开发及运行过程中,都扮演着非常重要的角色。在组件运行过程中,运行时负责管理内存分配、启动或删除线程和进程、实施安全性策略、同时满足当前组件对其它组件的需求。在开发阶段,运行时的作用有些变化,与现今的COM相比,运行时的自动化程度大为提高(比如可自动执行内存管理),因而开发人员的工作变得非常轻松。尤其是,映射功能将锐减开发人员将业务逻辑程序转化成可复用组件的代码编写量。对编程语言而言,运行时这个概念并不新奇,实际上每种编程语言都有自己的运行时。

16、Visual Basic开发系统具有最为明显的运行时(名为VBRUN),Visual C+跟Visual FoxPro、Jscript、SmallTalk、Perl、Python和Java一样有一个运行时,即MSVCRT。.NET框架的关键作用在于,它提供了一个跨编程语言的统一编程环境,这也是它能独树一帜的根本原因。 2、统一的编程类.NET框架为开发人员提供了一个统一、面向对象、层次化、可扩展的类库集(API)。现今,C+开发人员使用的是Microsoft基类库,Java开发人员使用的是Windows基类库,而Visual Basic用户使用的又是Visual Basic API集,这些都只

17、是简单的一用,而.NET框架就统一了微软当前的各种不同类框架。这样,开发人员无需学习多种框架就能顺利编程。远不止于此的是,通过创建跨编程语言的公共API集,.NET框架可实现跨语言继承性、错误处理功能和调试功能。3、编程语言.NET框架提供了一套有助于创建使用.NET框架的代码的工具,并且提供了可兼容.NET的语言,例如C#,VC+,BV.NET,Jscript.NET。 4、活动服务器页面(ASP+)ASP+是使用.NET框架提供的编程类库构建而成的,它提供了Web应用程序模型,该模型由一组控件和一个基本结构组成。有了它,Web应用程序的构建变得非常容易。开发人员可以直接使用ASP+控件集,

18、该控件集封装了公共的、用于超文本标识语言(HTML)用户界面的各种小器件(诸如文本框、下拉菜单等等)。实际上,这些控件运行在 Web服务器上,它们将用户界面转换成HTML格式后再发送给浏览器。在服务器上,控件负责将面向对象的编程模型提供给Web开发人员,这种编程模型能提供面向对象编程技术的丰富功能。ASP+还提供一些基本结构服务(诸如会话状态管理和进程重启服务),这些服务大大减少了开发人员要编写的代码量,并使应用程序的可靠性得到大幅度提高。ASP+还允许开发人员将软件作为一项服务来提供。通过使用ASP+ Web服务功能,ASP+开发人员只需进行简单的业务逻辑编程,而由ASP+基本结构负责通过简

19、单对象访问协议(SOAP)来提供服务。从层次结构来看,.NET框架又包括5个主要组成部分,通用语言运行环境、统一的基础类库、ADO.NET、ASP.NET和通用语言规范,如图2.1所示。图2.1 .NET框架支持环境2.2.3.Net框架的特性1、公共语言运行时2、公共类型系统.Net框架提供了一个公共的数据类型集合。例如,如果你引用了一个VB.NET、C#、J#、Delphi (.NET)、托管C+或其他任何一种.NET语言的字符串,公共类型系统能够确保你所引用的字符串对这些不同的语言来说是完全相同的实体。这是因为string类型是在.NET框架本身中定义的数据类型,而不是在语言中定义的数据

20、类型。让数据类型的定义与编程语言分离,便能够创建一个允许开发者采用VB.NET和C#语言混合编程,且不存在通信问题的编程环境。3、IL(中间语言)通用中间语言(Common Intermediate Language,CIL)更常称为IL,所有支持.NET框架的语言,在执行前都需要通过两次编译。首次编译是从源程序编译为.NET平台的PE格式文件(.exe或.dll),即要在CLR环境中执行的受控代码,它由中间语言IL和元数据组成。受控代码在执行时,需要有时编译器再将中间语言代码转换为目标机器的本地码才能运行。IL元数据和通用类型系统相结合,实现了真正的跨语言集会。中间语言IL可以被看作是.NE

21、T框架上汇编语言,它是与CPU不相关的指令集。它包含有加载、存储、初始化和调用对象方法的指令,同时它也有很多常用的指令,如算术运行、逻辑运算、流程控制、直接内存访问和异常处理等指令。开发者可以直接用这些指令编写代码,然后通过工具ILasm.exe编译成为PE格式文件,也可以通过工具ILasm.exe以文本方式来阅读PE格式文件的IL代码。2.2.4 .Net的名字空间在.NET中,类型按照名字空间组织,一个名字空间是一个逻辑容器,它提供了数据类型的名字解析。.NET框架中的核心数据类型都属于“System”名字空间。System:此命名空间包含 .NET框架类库中的其他所有命名空间。Syste

22、m还包含了CLR所使用的核心数据类型(core data types,也被其他基于CLR的语言所用)。这些类型包括数种不同的整数、一种字符串类型,以及其他。关于二维图形的名字命名空间主要有以下几个:System.Data:这个命名空间内的类型造就了ADO.NET。例如Connection类用于建立对数据库管理系统(database management system,DBMS)的连接,DataSet类的实例则可用于缓存(cache)和检视对DBMS执行的查询的结果。System.Collections.Generic命名空间包含接口和类定义类的聚集使使用者能创建更强的类型集,并且提供更好的安全

23、性。System.Text命名空间包含ASCII,Unicode, UTF-7, and UTF-8特性编码有关的类,从字节块转换到特征块的抽象基类型。System.Drawing命名空间提供了对 GDI+ 基本图形功能的访问。System.Collections命名空间包含了定义各种实体集的接口和类,例如目录、行列、阵列、表格和字典。System.Drawing.Drawing2D命名空间提供高级的二维和矢量图形功能。2.2.5 .Net2.0平台介绍以.NET Framework 2.0为基础的Visual Studio 2005包括微软5年来对.NET 1.0的所有修正。在1.0中还需花

24、费大量时间编写代码的功能,在2.0几乎不需要再写代码或者只需短短几行代码就可以完成。更重要的是,.NET Framework 2.0增添了的不少新类,同时相当多的类被重写.2.3 C简介2.3.1什么是C#C#是一种简单、现代、面向对象和类型安全的编程语言。C#起源于C语言家族,由C+发展而来,因此C、C+和JAVA的程序员可以很快熟悉这种新的语言。ECMA International 和ISO/IEC已对C#进行了标准化,分别是ECMA-334标准和ISO/IEC23270标准。Microsoft.NET框架的C#编译器符合这两个标准。C#是一种面向对象的语言,不过C#还进一步支持面对组件的

25、程序设计。现代软件设计越来越以来于自包含和自描述功能包形式的软件组件。这种组件的关键在于它们提供了使用属性、方法、和事件的程序设计模型:它们具有提供关于组件的声明信息的特性;同时,它们还加入了自己的文档。C#提供了语言构件来直接支持这些概念,从而使C#在创建和使用软件组件方面非常自然。C#的一些特性有助与创建健壮和稳定的应用程序:垃圾回收可以自动回收无用对象所占用的内存;异常处理提供了一种结构化和可扩展的错误检测及恢复方式;语言的类型安全设计可以防止引用末初始化变量、数组下标越界,以及执行未检查的类型转换等情形的发生。C#具有一个统一的类型系统。所有的C#类型都继承自单个根类型object。因

26、此,所有类型都共有一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C#还支持用户自定义的引用类型和值类型,既允许对象的动态分配,也允许轻量结构的内联存储。为了保证C#程序和类库总能以兼容的方式升级,在C#的设计中十分强调版本控制。许多程序设计语言不太重视这个问题,这导致了使用那些语言编写的程序常常因为其所依赖的类库的更新而无法工作。对版本控制的考虑直接影响了C#的设计,受影响的方面包括分开的virtual和override修饰符、方法重载的规则,以及对显示接口成员声明的支持等。2.3.2 C#的特点1、简单C#语言设计的首要目标就是简单,这也正是C+的致命缺点。通过

27、舍弃一小部分处理控制能力,增加诸如类型安全、自动垃圾收集等新特点,来最大限度地使语言最简单。2、面向对象C#是一种完全面向对象的编程语言,所有的元素都要被封装在类中,它支持所有面向对象语言的关键概念,包括封装、继承和多态,但它不再支持类的多继承,只允许但继承,即一个类只能有一个父亲。这是因为在多数情况下,只需要从一个类的多继承,从多个基类派生的会带来很多的问题。整个C#的类模型是建立在.NET虚拟对象系统基础上的,其对象模型是.NET框架的一个组成部分,而不再是语言本身的组成部分。因此,用C#编写的程序能够最大程度的与.NET支持的其他语言相互操作,能够实现跨语言的继承。3、类型安全类型对于编

28、程语言是非常重要的,C#实施了最严格类型安全机制,有效地增强了程序的可靠性。C#借鉴了很多Visual Basic语言中增强代码执行可靠性的特点,其中包括:所有动态分配的对象和数组都被初始化为0;虽然局部变量不会被自动初始化,但如果在程序中不初始化就使用,编译器会发出警告;对数组的访问,会自动进行边界检查;不能够写未分配的内存。4、版本控制C#提供了内置的版本支持,开发者可以使用它来确保开发的组件升级时,会与已有的系统保持二进制的兼容。5、灵活与兼容尽管C#代码在默认时类型安全的,不能使用指针类型,但是在非安全代码中,仍可以使用指针,并且调用这些非安全的代码不会带来任何问题。C#不是一个封闭的

29、语言,它允许通过遵守.NET公用语言规范CLS访问不同的API。2.3.3 C#的语言特性1、类C#中所有代码和数据都必须包含在类中。不能在类的外部定义变量,而且在类的外部不能编写任何代码。类可以拥有构造函数(constructor)和(destructor),前者在创建类的某个对象时执行,后者在撤消类的某个对象时执行。类支持单一继承性,所有类最终都继承自称为object的基类。C#支持版本技术,这有助于在维护与类前期版本代码的可兼容性的同时改进类的代码。C#允许类组合到称为名字空间的类的集合中。名字空间有它们各自的名称。并且有助于将类的集合组合到逻辑分组中。2、数据类型C#有两种数据类型:值

30、类型和引用类型。值类型的数据包含真正的值。引用类型的数据包含对存储在内存中其他地方的值的引用。基本类型都属于值类型,比如字符类型(char)、整数类型(int)、浮点类型(float)、枚举类型和结构类型。引用类型包含处理对象和数组的变量。C#有预定义的引用类型(对象object和字符串string),也有预定义的值类型。还可以在代码中定义自己的值类型和引用类型。最终,所有值类型和引用类型都从称为object的基类型派生而来。C#允许将一种类型的值转换成另一种类型的值。既可以采用隐式转换又可以采用显示转换。通常,隐式转换会成功并且不会丢失任何信息,显示转换可能会导致丢失数据。要进行显示转换时,

31、必须在代码中写出类型转换运算符。3、函数函数是可调用的代码段,它可能返回也可能不返回值给最初调用它的代码。通常,函数的代码段会返回信息,而方法则不返回信息。C#和CLR结合使用可以提供自动内存管理。C#提供了各种运算符用于编写数学表达式和逐位操作表达式。C#支持很多语句,这些语句允许在代码中定义各种执行分支。4、变量变量可以被定义为常量。常量的值在整个代码执行过程中不可以修改。C#为定义和处理事件提供了一种内置的机制。如果编写了一个执行一长串操作的类,可能会希望在操作完成时启动某个事件。这时,客户可以预约该事件并在代码中捕获该事件,这样当完成很长的操作时,该事件会通知客户。C#中的事件处理机制

32、使用了委托,它们是引用某个函数的变量。5、接口C#支持接口(interface),接口是指一套功能的属性、方法和事件的组合。C#类可以实现接口,从而告诉用户类支持接口中指定的功能,可以在不与任何现有代码抵触的情况下开发接口的实现,这样将最低限度地减小可兼容性的问题。6、属性属性向CLR声明有关类的其他信息,它允许开发人员在类上绑定信息任何信息。例如,可以使用某个属性在类中嵌入文档编制信息。属性还可以用于来中绑定运行时信息,定义使用时应该如何采取动作。2.4 GDI+简介2.4.1什么是GDI+GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过

33、C+类实现的应用程序编程接口(API,Application Programming Interface),通过这些API,GDI+让程序员在设计程序时不必考虑到具体的显示器或打印机,直接使用由GDI+提供的类的方法便可以在显示器或打印机等输出设备上进行图形或文本的输出,真正做到与设备无关。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。 作为图形设备接口的GDI+使得应用程序开发人员

34、在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成。GDI+使得图形硬件和应用程序相互隔离,从而使开发人员编写设备无关的应用程序变得非常容易。2.4.2 GDI+的体系结构图GDI+与GDI、Directx一样,都是开发图形应用程序的一种方式。GDI+实际就是GDI的高层次的一种封装类,二着主要用来服务于图形、图象和文本的输出。惟一不同的是,GDI+在功能上要强大些。另外,二者在编程应用上的本质区别是,GDI+用一个“无状态模型”取代了GDI中把选中项目放到设备环境(DC,Dev

35、ice Context)对象上的“状态模型”,在GDI+中每一个绘图操作都是相互独立的。图形对象(Graphics object)是绘图操作中惟一保留的对象。如图2.2所示:图2.2 GDI+体系结构2.4.3 GDI+的构成从GDI+所包含的内容来看,它主要由以下几方面构成:1、二维几何图形的处理矢量图形由图元(如直线、曲线和轮廓等)组成,图元由坐标中的一组点来指定。例如,一条直线可用两个点来指定,一个矩形可用一个给出其左上角位置的点和一对给出其宽度、高度的数字来指定。一条简单路径可用由直线或曲线连接起来的一组点来指定。GDI+的RECT(矩形)类用与存储矩形的位置和尺寸;PEN类存储线条颜

36、色、线宽和线条风格的信息;Graphics类用于绘制直线、矩形及其他图形;还有几个Brush类存储用颜色图案来填充闭合图形和路径的方法。2、显示图象 某些图象难以或不可能使用矢量图形技术来表示。例如,工具栏中的按扭图标就很难使用直线和曲线的集合来表示。一幅包含一个拥挤的棒球场的高分辨率数字图象更难用矢量技术来创建。这种类型的图象一般都存储为位图,位图是代表屏幕上单个点的颜色的数字阵列。用于存储位图信息的数据结构比用于存储矢量图形的数据结构更为复杂。所以在GDI+中就有几个类用于处理这些复杂的位图信息,CachedBitmap(缓存位图)类就是一个例子,该类用于在内存中存储位图以便快速访问与显示

37、位图。3、排版排版与使用各种各样的字体、尺寸和风格显示的文本有关。GDI+为这一复杂任务提供了大量的函数来完成各种不同风格的文本输出。GDI+对文本的一个重要支持,就是文本的反锯齿输出,这也是GDI+的一个新特色,该特色使得在LCD屏幕上绘制文本时文本的外观更加光滑。2.4.4 GDI+的新特色与传统的GDI相比,GDI+归纳起来有以下几方面的新特色。1、渐变的画刷(Gradient Brushes) 画刷是用来填充控件、窗口和区域的一个GDI对象。原有的GDI仅支持单色的画刷,如果想画一个在阳光照耀下的矩形物体,通过GDI的画刷则不能实现光线强弱的立体效果。GDI+画刷改变了这一点,GDI+

38、允许用户创建一个沿路径或直线渐变的画刷,来填充外形(shapes),路径(paths),区域(regions),渐变画刷同样也可以画直线、曲线、路径,当你用一个线形画刷填充一个外形(shapes)时,颜色就能够沿外形逐渐变化。2、基数样条函数(Cardinal Splines) GDI支持基数样条函数,而GDI不支持。基数样条是一组单个曲线按照一定的顺序连接而成的一条较大曲线。样条由一系列点指定,并通过每一个指定的点。由于基数样条平滑地穿过组中的每一个点(不出现尖角),因而它比用直线连接创建的路径更精确。3、独立的路径对象(Path Objects)在GDI中,路径属于设备描述表(DC),在B

39、eginPath函数和EndPath后便被新的路径信息覆盖,也就是说GDI的路径信息是唯一并且不断改变的。在GDI+中,绘图工作由图形对象(Graphics)来完成,并且可以创建多个图形对象进行绘图,多个图形对象产生的路径信息是相对独立的,而且不会被新的绘图操作所覆盖。你可以创建几个与Graphics分开的路径对象,绘图操作时路径对象不被破环,这样你就可以多次使用同一个路径对象画路径了。 4、变形和矩阵对象(Transformations Matrix Object)GDI+提供了矩阵对象来使图形在变形(旋转及平移等)时做到简单且效果平滑。矩形对象存储了图形在变化过程中的位置信息。使用矩形除了

40、可以对坐标位置信息进行变换以外,还可以对色彩空间信息进行变换。在GDI+中通过矩阵运算,可以完成包含投射变换在内的所有仿射变换。一个矩阵对象总是和一个图形变换对相联系起来,比方说,路径对象(PATH)有一个Transform方法,它的一个参数能够接受矩阵对象的地址,每次路径绘制时,它能够根据变换矩阵绘制。5、Alpha通道合成运算(Alpha Blending)Alpha Blendings 是图形处理中最常见的一种运算方法。在GDI+中,Alpha Blending不仅运用在图片的合成方面,也体现在画笔、画刷与目标图形区域之间的合成运算中,可以在两幅图片重叠显示时,设置显示图片的透明度来合成

41、图片,真正做到透明。6、多种图像格式支持 图像在图形界面程序中占有举足轻重的地位,GDI除了支持BMP等GDI支持的图形格式外,还支持JPEG(Joint Photographic Experts Group)、GIF(Graphics Interchange Format)、PNG(Exchangeable Image File)、TIFF(Tag Image File Format)等图像格式,你可以直接在程序中使用这些图片文件,而无需考虑它们所用压缩算法。 GDI+的所有新特色给程序员提供了一种简洁的方法来完成在GDI中需要经过繁琐的过程才能完成的编程工作。从某种意义上来说,GDI+是对

42、使用GDI编程的程序员的一种解脱。3系统总体设计3.1系统总体结构基于GDI+2D图形软件开发方法初探2D几何画板,主要模块包括基本图形绘制、自定义图形绘制、测量、2D函数图形绘制、序列化及系统功能模块。绘制的主要图形对象包括:点、线段、曲线、圆、矩形、正方形、菱形、任意三角形、等腰三角形、等边三角形、直角三角形、带外接圆的三角形、多边形。系统总体结构和部署示意图如图3.1所示:线段、射线、直线、矩形、圆、点正方形、菱 形、三角形、多边形、曲 线角度、长度、距离、直角坐标系里函数表达式的图形生成基本图形绘制模块自定义图形绘制模块测量模块2D函数图形绘制模块序列化模块系统功能模块基于GDI+2D

43、软件开发方法初探2D几何画板图3.1 系统总体结构和部署示意图3.2系统模块结构系统总体模块结构描述如表3.1所示:表3.1系统总体模块结构模块名称功能描述基本图形绘制基本图形的绘制,如点,线段,圆,矩形等自定义图形绘制自定义图形的绘制,如菱形,多边形,带外接圆的三角形测 量对相应对象进行测量,如长度,距离,角度2D函数图形绘制绘制直角坐标系函数表达式的图形,可分区间查看图形特征序列化对绘制结果进行序列化,对对象可再编辑系统功能提供帮助,操作指南,工具栏,状态栏等3.3系统类结构系统类结构如图3.2所示图3.2 系统类结构图类详细设计如图3.3所示: (a)基类 (b)点 (c)圆 (d)矩形

44、 (e)直线 (f)多边形 (g)三角形 (h)直角三角形 (i)等边三角形 (j)三角形(带外接圆) (k)菱形 (l)等腰三角形 (m)标记文字 (n)曲线 (o)正方形图3.3 类详细设计3.4系统运行环境(1)运行环境:.NET Framework 2.0。(2)操作系统:Windows98、Windows2000、WindowsXP及以上版本。(3)硬件要求:CPU:Pentium (及以上)、内存:256MB(建议512MB或以上)。3.5规格说明(1)显示图标规格即桌面显示的图标:30 * 30,单位像素。桌面图标设计效果如图3.4所示:图3.4 桌面图标(2)图标规格即工具栏显

45、示的图标:20 * 20,单位像素。工具栏图标设计效果如图3.5所示: (a)选取 (b)点 (c)直线 (d)矩形 (e)圆 (f)三角形 (g)标记文字 (e)自定义图3.5 工具栏图标在工具栏图标中,右下角带黑色小三角的,表示该图标是同一类别图形的集合,具体说明如表3.2所示:表3.2图标说明 图标名称说 明选取选取点点直线直线、射线、线段、曲线矩形矩形、正方形、菱形圆圆三角形任意三角形、直角、等腰、等边、三角形(带外接圆)标记文字标记文字自定义六边形、十二边形、任意多边形4系统窗体界面设计图形界面是人机交互的接口,提供了直观,方便的操作。在界面设计中,应遵循美观、舒适、操作方便、结构合理等要求。4.1设计原则在机算机软件技术中,人机界面已经发展成为一个重要的分支。基于GDI+2D图形软件开发方法初探2D几何画板系统的人机界面设计一般遵循了以下的原则: (1)简洁。(2)方便。(3)直观。4.2界面详细设计系统的登录界面图4.1所示:图4.1 系统登录界面登录界面中显示一些基本的信息。在设计中采用了界面透明技术,使得登录界面更具视角冲击。系统的主界面图4.2所示:绘图区快捷栏常用工具栏属性面板系统状态栏属性控制区系统菜单栏图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号