基于GDI2D图形软件开发方法初探2D几何画板毕业论文

上传人:痛*** 文档编号:100843225 上传时间:2022-06-03 格式:DOC 页数:64 大小:1.01MB
返回 下载 相关 举报
基于GDI2D图形软件开发方法初探2D几何画板毕业论文_第1页
第1页 / 共64页
基于GDI2D图形软件开发方法初探2D几何画板毕业论文_第2页
第2页 / 共64页
基于GDI2D图形软件开发方法初探2D几何画板毕业论文_第3页
第3页 / 共64页
点击查看更多>>
资源描述
基于GDI+2D图形软件开发方法初探2D几何画板摘要基于GDI2D图形软件开发方法初探2D几何画板,是采用Microsoft Visual C 2.0为开发语言,Microsoft .NET Framework 2.0为支撑平台开发的用于研究二维图形的图形软件。2D几何画板的开发,主要是研究GDI+技术在二维图形软件中的开发方法的探索。在该系统中,实现一些基本的图形绘制,如点、线、圆的绘制,与一些自定义图形的绘制,如多边形,曲线,带外接圆的三角形的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。2D几何画板除了实现基本的图形的绘制外,还实现了共点运动,可以动态的观察二维空间中关联对象的共点运动,当某个对象的相关属性改变时,对其他关联对象的影响;还可以精确的定位相关对象的相关属性,如圆的半径,曲线的力等。本论文首先介绍了项目开发的背景,相关开发工具、开发语言和平台的介绍,然后是系统的总体设计,系统的详细设计,包括窗口界面,图形绘制模块,测量模块,2D函数图形绘制模块,序列化模块的设计。关键词:面向对象;命名空间;序列化;GDI+;图元57 / 64GDI+ Based Developmentof 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 imaging 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, triangles, 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毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作与取得的研究成果。据我所知,除文中已经注明引用的容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示意。 作者签名: 日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分容。的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名:日期: 日期:注意事项1.设计(论文)的容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体与大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画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 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带外接圆的三角形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几何画板,主要实现一些基本的图形绘制,如点、线、圆的绘制,与一些自定义图形的绘制,如多边形,射线,直线的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。2开发背景2.1当代信息技术的发展现状2.1.1当代信息技术的发展以网络化、数字化、多媒化和智能化为代表的现代信息技术,正在改变人们传统的生活、学习和工作方式,影响教育的容与方法。当代信息技术的发展,特别是以Internet为核心的网络技术的发展和应用,使整个社会步入全新的网络经济时代,电子商务作为网络经济的重要载体,己经成为信息时代市场发展的一个重要标致,发展电子商务则成为当今世界商务活动的关键推动力,同时电子商务也是各类组织在结构,运营和管理方面发生根本变革的催化剂,使得企业之间的竞争规则和面临的营销环境增添了许多新容,随着电子商务技术的日趋完善和电子商务市场环境的日趋成熟,电子商务已经成为越来越多的企业和行业追求和向往的交易模式.两大信息技术成了一个从工业文明向信息时代过渡的重要的技术杠杆。计算机出现以后,还没有带来那么大的变化,到计算机发展到多媒体的时候才发生了质的变化。因为计算机仅仅是“计算机”的时候,所用的都是计算机语言,很难掌握。计算机发展到多媒体了,现在已经是超越了单纯的计算机语言的时代。多媒体的出现就把文字、声音、图像、三维动画全部变成数字信息,融为一体。多媒体全方位拓展人的观感,是人的观感的延伸,容易让人掌握,所以到了多媒体时代。当多媒体技术成熟以后,掌握多媒体技术的人和多媒体计算机一起构成了信息时代的新细胞,信息社会的新细胞。多媒体和信息高速公路以想象不到的惊人的速度在改变着我们的工作方式、交流方式、学习方式、思维方式、生活方式。信息化的时代是世界发展的大趋势。整个世界的发展趋势就是:世界越来越步人信息时代,国家越来越走向国民经济信息化。2.1.2计算机处理能力的发展自1666年,在英国Samuel Morland发明了一部可以计算加数与减数的机械计数机,到1984年,日本计算机产业着手研制“第五代计算机”,计算机处理能力已经从简单的机械计数变成人工智能。第五代计算机把信息采集、存储、处理、通信和人工智能结合一起具有形式推理、联想、学习和解释能力。它的系统结构突破传统的诺依曼机器的概念,实现高度的并行处理。2.2.NET框架的简介2.2.1.Net框架简介.NET框架(Framework)是一个开发、部署和运行.NET应用的环境,包括了ASP.NET、公共语言运行时环境(CLR)以与.NET 框架类。.NET框架的目的是使Windows应用程序更加可靠并提供给应用程序更大程度的安全性,简化Web应用程序和服务的开发,提供独立的一套库,使其可用于多种语言。2.2.2.Net框架的组成1、公共语言运行时此名称不能准确反映它的全部功能。实际上,公共语言运行时在组件的开发与运行过程中,都扮演着非常重要的角色。在组件运行过程中,运行时负责管理存分配、启动或删除线程和进程、实施安全性策略、同时满足当前组件对其它组件的需求。在开发阶段,运行时的作用有些变化,与现今的COM相比,运行时的自动化程度大为提高(比如可自动执行存管理),因而开发人员的工作变得非常轻松。尤其是,映射功能将锐减开发人员将业务逻辑程序转化成可复用组件的代码编写量。对编程语言而言,运行时这个概念并不新奇,实际上每种编程语言都有自己的运行时。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集,这些都只是简单的一用,而.NET框架就统一了微软当前的各种不同类框架。这样,开发人员无需学习多种框架就能顺利编程。远不止于此的是,通过创建跨编程语言的公共API集,.NET框架可实现跨语言继承性、错误处理功能和调试功能。3、编程语言.NET框架提供了一套有助于创建使用.NET框架的代码的工具,并且提供了可兼容.NET的语言,例如C#,VC+,BV.NET,Jscript.NET。4、活动服务器页面(ASP+)ASP+是使用.NET框架提供的编程类库构建而成的,它提供了Web应用程序模型,该模型由一组控件和一个基本结构组成。有了它,Web应用程序的构建变得非常容易。开发人员可以直接使用ASP+控件集,该控件集封装了公共的、用于超文本标识语言(HTML)用户界面的各种小器件(诸如文本框、下拉菜单等等)。实际上,这些控件运行在 Web服务器上,它们将用户界面转换成HTML格式后再发送给浏览器。在服务器上,控件负责将面向对象的编程模型提供给Web开发人员,这种编程模型能提供面向对象编程技术的丰富功能。ASP+还提供一些基本结构服务(诸如会话状态管理和进程重启服务),这些服务大大减少了开发人员要编写的代码量,并使应用程序的可靠性得到大幅度提高。ASP+还允许开发人员将软件作为一项服务来提供。通过使用ASP+ Web服务功能,ASP+开发人员只需进行简单的业务逻辑编程,而由ASP+基本结构负责通过简单对象访问协议(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框架本身中定义的数据类型,而不是在语言中定义的数据类型。让数据类型的定义与编程语言分离,便能够创建一个允许开发者采用VB.NET和C#语言混合编程,且不存在通信问题的编程环境。3、IL(中间语言)通用中间语言(Common Intermediate Language,CIL)更常称为IL,所有支持.NET框架的语言,在执行前都需要通过两次编译。首次编译是从源程序编译为.NET平台的PE格式文件(.exe或.dll),即要在CLR环境中执行的受控代码,它由中间语言IL和元数据组成。受控代码在执行时,需要有时编译器再将中间语言代码转换为目标机器的本地码才能运行。IL元数据和通用类型系统相结合,实现了真正的跨语言集会。中间语言IL可以被看作是.NET框架上汇编语言,它是与CPU不相关的指令集。它包含有加载、存储、初始化和调用对象方法的指令,同时它也有很多常用的指令,如算术运行、逻辑运算、流程控制、直接存访问和异常处理等指令。开发者可以直接用这些指令编写代码,然后通过工具ILasm.exe编译成为PE格式文件,也可以通过工具ILasm.exe以文本方式来阅读PE格式文件的IL代码。2.2.4.Net的名字空间在.NET中,类型按照名字空间组织,一个名字空间是一个逻辑容器,它提供了数据类型的名字解析。.NET框架中的核心数据类型都属于“System”名字空间。System:此命名空间包含 .NET框架类库中的其他所有命名空间。System还包含了CLR所使用的核心数据类型(core data types,也被其他基于CLR的语言所用)。这些类型包括数种不同的整数、一种字符串类型,以与其他。关于二维图形的名字命名空间主要有以下几个:System.Data:这个命名空间的类型造就了ADO.NET。例如Connection类用于建立对数据库管理系统(database management system,DBMS)的连接,DataSet类的实例则可用于缓存(cache)和检视对DBMS执行的查询的结果。System.Collections.Generic命名空间包含接口和类定义类的聚集使使用者能创建更强的类型集,并且提供更好的安全性。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中还需花费大量时间编写代码的功能,在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#还进一步支持面对组件的程序设计。现代软件设计越来越以来于自包含和自描述功能包形式的软件组件。这种组件的关键在于它们提供了使用属性、方法、和事件的程序设计模型:它们具有提供关于组件的声明信息的特性;同时,它们还加入了自己的文档。C#提供了语言构件来直接支持这些概念,从而使C#在创建和使用软件组件方面非常自然。C#的一些特性有助与创建健壮和稳定的应用程序:垃圾回收可以自动回收无用对象所占用的存;异常处理提供了一种结构化和可扩展的错误检测与恢复方式;语言的类型安全设计可以防止引用末初始化变量、数组下标越界,以与执行未检查的类型转换等情形的发生。C#具有一个统一的类型系统。所有的C#类型都继承自单个根类型object。因此,所有类型都共有一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C#还支持用户自定义的引用类型和值类型,既允许对象的动态分配,也允许轻量结构的联存储。为了保证C#程序和类库总能以兼容的方式升级,在C#的设计中十分强调版本控制。许多程序设计语言不太重视这个问题,这导致了使用那些语言编写的程序常常因为其所依赖的类库的更新而无法工作。对版本控制的考虑直接影响了C#的设计,受影响的方面包括分开的virtual和override修饰符、方法重载的规则,以与对显示接口成员声明的支持等。2.3.2 C#的特点1、简单C#语言设计的首要目标就是简单,这也正是C+的致命缺点。通过舍弃一小部分处理控制能力,增加诸如类型安全、自动垃圾收集等新特点,来最大限度地使语言最简单。2、面向对象C#是一种完全面向对象的编程语言,所有的元素都要被封装在类中,它支持所有面向对象语言的关键概念,包括封装、继承和多态,但它不再支持类的多继承,只允许但继承,即一个类只能有一个父亲。这是因为在多数情况下,只需要从一个类的多继承,从多个基类派生的会带来很多的问题。整个C#的类模型是建立在.NET虚拟对象系统基础上的,其对象模型是.NET框架的一个组成部分,而不再是语言本身的组成部分。因此,用C#编写的程序能够最大程度的与.NET支持的其他语言相互操作,能够实现跨语言的继承。3、类型安全类型对于编程语言是非常重要的,C#实施了最严格类型安全机制,有效地增强了程序的可靠性。C#借鉴了很多Visual Basic语言中增强代码执行可靠性的特点,其中包括:所有动态分配的对象和数组都被初始化为0;虽然局部变量不会被自动初始化,但如果在程序中不初始化就使用,编译器会发出警告;对数组的访问,会自动进行边界检查;不能够写未分配的存。4、版本控制C#提供了置的版本支持,开发者可以使用它来确保开发的组件升级时,会与已有的系统保持二进制的兼容。5、灵活与兼容尽管C#代码在默认时类型安全的,不能使用指针类型,但是在非安全代码中,仍可以使用指针,并且调用这些非安全的代码不会带来任何问题。C#不是一个封闭的语言,它允许通过遵守.NET公用语言规CLS访问不同的API。2.3.3 C#的语言特性1、类C#中所有代码和数据都必须包含在类中。不能在类的外部定义变量,而且在类的外部不能编写任何代码。类可以拥有构造函数(constructor)和(destructor),前者在创建类的某个对象时执行,后者在撤消类的某个对象时执行。类支持单一继承性,所有类最终都继承自称为object的基类。C#支持版本技术,这有助于在维护与类前期版本代码的可兼容性的同时改进类的代码。C#允许类组合到称为名字空间的类的集合中。名字空间有它们各自的名称。并且有助于将类的集合组合到逻辑分组中。2、数据类型C#有两种数据类型:值类型和引用类型。值类型的数据包含真正的值。引用类型的数据包含对存储在存中其他地方的值的引用。基本类型都属于值类型,比如字符类型(char)、整数类型(int)、浮点类型(float)、枚举类型和结构类型。引用类型包含处理对象和数组的变量。C#有预定义的引用类型(对象object和字符串string),也有预定义的值类型。还可以在代码中定义自己的值类型和引用类型。最终,所有值类型和引用类型都从称为object的基类型派生而来。C#允许将一种类型的值转换成另一种类型的值。既可以采用隐式转换又可以采用显示转换。通常,隐式转换会成功并且不会丢失任何信息,显示转换可能会导致丢失数据。要进行显示转换时,必须在代码中写出类型转换运算符。3、函数函数是可调用的代码段,它可能返回也可能不返回值给最初调用它的代码。通常,函数的代码段会返回信息,而方法则不返回信息。C#和CLR结合使用可以提供自动存管理。C#提供了各种运算符用于编写数学表达式和逐位操作表达式。C#支持很多语句,这些语句允许在代码中定义各种执行分支。4、变量变量可以被定义为常量。常量的值在整个代码执行过程中不可以修改。C#为定义和处理事件提供了一种置的机制。如果编写了一个执行一长串操作的类,可能会希望在操作完成时启动某个事件。这时,客户可以预约该事件并在代码中捕获该事件,这样当完成很长的操作时,该事件会通知客户。C#中的事件处理机制使用了委托,它们是引用某个函数的变量。5、接口C#支持接口(interface),接口是指一套功能的属性、方法和事件的组合。C#类可以实现接口,从而告诉用户类支持接口中指定的功能,可以在不与任何现有代码抵触的情况下开发接口的实现,这样将最低限度地减小可兼容性的问题。6、属性属性向CLR声明有关类的其他信息,它允许开发人员在类上绑定信息任何信息。例如,可以使用某个属性在类中嵌入文档编制信息。属性还可以用于来中绑定运行时信息,定义使用时应该如何采取动作。2.4 GDI+简介2.4.1什么是GDI+GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C+类实现的应用程序编程接口(API,Application Programming Interface),通过这些API,GDI+让程序员在设计程序时不必考虑到具体的显示器或打印机,直接使用由GDI+提供的类的方法便可以在显示器或打印机等输出设备上进行图形或文本的输出,真正做到与设备无关。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。 作为图形设备接口的GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成。GDI+使得图形硬件和应用程序相互隔离,从而使开发人员编写设备无关的应用程序变得非常容易。2.4.2 GDI+的体系结构图GDI+与GDI、Directx一样,都是开发图形应用程序的一种方式。GDI+实际就是GDI的高层次的一种封装类,二着主要用来服务于图形、图象和文本的输出。惟一不同的是,GDI+在功能上要强大些。另外,二者在编程应用上的本质区别是,GDI+用一个“无状态模型”取代了GDI中把选中项目放到设备环境(DC,Device Context)对象上的“状态模型”,在GDI+中每一个绘图操作都是相互独立的。图形对象(Graphics object)是绘图操作中惟一保留的对象。如图2.2所示:图2.2 GDI+体系结构2.4.3 GDI+的构成从GDI+所包含的容来看,它主要由以下几方面构成:1、二维几何图形的处理矢量图形由图元(如直线、曲线和轮廓等)组成,图元由坐标中的一组点来指定。例如,一条直线可用两个点来指定,一个矩形可用一个给出其左上角位置的点和一对给出其宽度、高度的数字来指定。一条简单路径可用由直线或曲线连接起来的一组点来指定。GDI+的RECT(矩形)类用与存储矩形的位置和尺寸;PEN类存储线条颜色、线宽和线条风格的信息;Graphics类用于绘制直线、矩形与其他图形;还有几个Brush类存储用颜色图案来填充闭合图形和路径的方法。2、显示图象 某些图象难以或不可能使用矢量图形技术来表示。例如,工具栏中的按扭图标就很难使用直线和曲线的集合来表示。一幅包含一个拥挤的棒球场的高分辨率数字图象更难用矢量技术来创建。这种类型的图象一般都存储为位图,位图是代表屏幕上单个点的颜色的数字阵列。用于存储位图信息的数据结构比用于存储矢量图形的数据结构更为复杂。所以在GDI+中就有几个类用于处理这些复杂的位图信息,CachedBitmap(缓存位图)类就是一个例子,该类用于在存中存储位图以便快速访问与显示位图。3、排版排版与使用各种各样的字体、尺寸和风格显示的文本有关。GDI+为这一复杂任务提供了大量的函数来完成各种不同风格的文本输出。GDI+对文本的一个重要支持,就是文本的反锯齿输出,这也是GDI+的一个新特色,该特色使得在LCD屏幕上绘制文本时文本的外观更加光滑。2.4.4 GDI+的新特色与传统的GDI相比,GDI+归纳起来有以下几方面的新特色。1、渐变的画刷(Gradient Brushes) 画刷是用来填充控件、窗口和区域的一个GDI对象。原有的GDI仅支持单色的画刷,如果想画一个在照耀下的矩形物体,通过GDI的画刷则不能实现光线强弱的立体效果。GDI+画刷改变了这一点,GDI+允许用户创建一个沿路径或直线渐变的画刷,来填充外形(shapes),路径(paths),区域(regions),渐变画刷同样也可以画直线、曲线、路径,当你用一个线形画刷填充一个外形(shapes)时,颜色就能够沿外形逐渐变化。2、基数样条函数(Cardinal Splines) GDI支持基数样条函数,而GDI不支持。基数样条是一组单个曲线按照一定的顺序连接而成的一条较大曲线。样条由一系列点指定,并通过每一个指定的点。由于基数样条平滑地穿过组中的每一个点(不出现尖角),因而它比用直线连接创建的路径更精确。3、独立的路径对象(Path Objects)在GDI中,路径属于设备描述表(DC),在BeginPath函数和EndPath后便被新的路径信息覆盖,也就是说GDI的路径信息是唯一并且不断改变的。在GDI+中,绘图工作由图形对象(Graphics)来完成,并且可以创建多个图形对象进行绘图,多个图形对象产生的路径信息是相对独立的,而且不会被新的绘图操作所覆盖。你可以创建几个与Graphics分开的路径对象,绘图操作时路径对象不被破环,这样你就可以多次使用同一个路径对象画路径了。 4、变形和矩阵对象(Transformations Matrix Object)GDI+提供了矩阵对象来使图形在变形(旋转与平移等)时做到简单且效果平滑。矩形对象存储了图形在变化过程中的位置信息。使用矩形除了可以对坐标位置信息进行变换以外,还可以对色彩空间信息进行变换。在GDI+过矩阵运算,可以完成包含投射变换在的所有仿射变换。一个矩阵对象总是和一个图形变换对相联系起来,比方说,路径对象(PATH)有一个Transform方法,它的一个参数能够接受矩阵对象的地址,每次路径绘制时,它能够根据变换矩阵绘制。5、Alpha通道合成运算(Alpha Blending)Alpha Blendings 是图形处理中最常见的一种运算方法。在GDI+中,Alpha Blending不仅运用在图片的合成方面,也体现在画笔、画刷与目标图形区域之间的合成运算中,可以在两幅图片重叠显示时,设置显示图片的透明度来合成图片,真正做到透明。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+是对使用GDI编程的程序员的一种解脱。3系统总体设计3.1系统总体结构基于GDI+2D图形软件开发方法初探2D几何画板,主要模块包括基本图形绘制、自定义图形绘制、测量、2D函数图形绘制、序列化与系统功能模块。绘制的主要图形对象包括:点、线段、曲线、圆、矩形、正方形、菱形、任意三角形、等腰三角形、等边三角形、直角三角形、带外接圆的三角形、多边形。系统总体结构和部署示意图如图3.1所示:线段、射线、直线、矩形、圆、点正方形、菱 形、三角形、多边形、曲 线角度、长度、距离、直角坐标系里函数表达式的图形生成基本图形绘制模块自定义图形绘制模块测量模块2D函数图形绘制模块序列化模块系统功能模块基于GDI+2D软件开发方法初探2D几何画板图3.1 系统总体结构和部署示意图3.2系统模块结构系统总体模块结构描述如表3.1所示:表3.1系统总体模块结构模块名称功能描述基本图形绘制基本图形的绘制,如点,线段,圆,矩形等自定义图形绘制自定义图形的绘制,如菱形,多边形,带外接圆的三角形测 量对相应对象进行测量,如长度,距离,角度2D函数图形绘制绘制直角坐标系函数表达式的图形,可分区间查看图形特征序列化对绘制结果进行序列化,对对象可再编辑系统功能提供帮助,操作指南,工具栏,状态栏等3.3系统类结构系统类结构如图3.2所示图3.2 系统类结构图类详细设计如图3.3所示:(a)基类 (b)点 (c)圆 (d)矩形 (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)图标规格即工具栏显示的图标: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所示:绘图区快捷栏常用工具栏属性面板系统状态栏属性控制区系统菜单栏图4.2 系统主界面系统菜单栏设计如图4.3所示:图4.3 系统菜单栏系统菜单栏的详细设计如图4.4所示:图4.4 系统菜单栏的详细设计系统快捷栏如图4.5所示:图4.5 系统快捷栏系统快捷栏提供了系统功能的快捷操作,可以方便的操作,提高了效率。常用工具栏如图4.6所示:图4.6 常用工具栏系统属性控制区是对相应对象的相关属性进行控制,如圆可以设置半径,曲线可以设置力,并实时的绘制出变化后的图形。系统属性控制区如图有4.7所示:图4.7 属性控制区系统属性面板是相关对象属性的显示区域,相关对象的属性在属性面板中实时的显示出来。系统属性面板如图4.8所示:图4.8 系统属性面板系统状态栏是系统相关状态的显示区域,如当前鼠标的坐标位置,当前文档的路径等信息。系统状态栏如图4.9所示:图4.9 系统状态栏绘图区是系统核心区域,所有图形的绘制都在此区域完成。绘图区是图形的绘制区域,可以绘制图形并对图形对象进行控制、修改、变更等操作。直角坐标系二维函数图形显示界面如下:函数表达式录入界面如图4.10所示:图4.10 二维函数表达式录入界面函数表达式图形显示界面如力4.11所示:图4.11 二维表达式图形显示界面5图形绘制模块设计图形绘制模块主要负责系统基本图形与自定义图形的绘制,如点,线,圆,矩形,曲线,带外接圆的三角形等。基于面向对象的设计思想,所有图元对象都从一个基类派生,基类定义一些共有的属性和方法,从它派生的类重写基类的相应方法来实现各自特有的动作。 5.1基类在.NET中所有的对象都从Object派生,这也是面向对象思想的一种体现。基类从object对象派生,其实现如图5.1所示:图5.1 基类从object对象派生实现基类中相应方法的说明如表5.1所示:表5.1 基类方法说明方法名参数返回值功能HotPointGraphics,Point void绘制关键点AtPointPoint, Point bool判断当前鼠标坐标是否落在关键点上AtLinePoint,Point, Pointbool判断当前鼠标坐标是否落在线上PainGraphicsvirtual void由关键点绘制出相应的图形SelectAtPointvirtual int判断当前选中关键属性MoveGraphics,int,Poinvirtual voi移动对象时发生的动作NewPointPointvirtual in新建对象时发生的动作AddPointPointvirtual int新增一个关键点HotPointsGraphicsvirtual void选中对象时绘制出其关键点drawFocus1Graphicsvirtual void当焦点落在关键点时响应的动作drawFocus0Graphicsvirtual void当焦点离开关键点时响应的动作5.2点点是基本的对象之一,它由一个坐标确定。如果当前绘制类型是点时,按下鼠标左键时确定点的坐标,然后绘制出点;当绘制类型是选择时,按下鼠标左键选中点并按动时,可以改变点的坐标,对点进行移动。点的绘制方法如图5.2所示:图5.2点绘制方法5.3线段线段是基本的对象之一,它由关键点确定。如果当前绘制类型是线段,按下鼠标左键时确定线段的第一个关键点,然后按着鼠标左键并移动鼠标,当释放鼠标左键时,确定线段的第二个关键点,然后由二个关键点确定线段。当选中线段时,其二个关键点会高亮显示。可以选中其关键点并改变关键点的属性,也可以选中线段,移动线段。线段的绘制方法如图5.3所示:图5.3 线段绘制方法移动线段的方法如图5.4所示:图5.4 移动线段方法5.4矩形矩形有四个关键点,在绘制时只确定左上方和右下方二个关键点即可,左下方和右上方二个关键可由左上方和右下方二个关键点确定。当绘制类型是矩形时,按下鼠标左键时确定左上方的关键点,然后按着鼠标左键并拖动鼠标绘制矩形,释放鼠标时确定右下方的关键点,完成矩形的绘制。当选中矩形时,四个关键点将会高亮显示,可以改变关键点的属性,也可以选中矩形改变矩形的位置。矩形的绘制方法如图5.5所示:图5.5 矩形绘制方法移动矩形时响应的方法如图5.6所示:图5.6 移动矩形响应方法5.5正方形正方形是矩形的特例,它的四边等长的矩形。正文形类从矩形类派生,与矩形类有一样的属性,具有四个关键点。正文形的绘制方法如图5.7所示:图5.7正方形绘制方法5.6菱形菱形是矩形的特例,它具有四边等长的特性。菱形类从矩形类派生,与矩形类具有一样的属性,菱形类具有六个关键点,可以改变菱形的大小,也可以改变菱形相应角度的大小。菱形的绘制方法如图5.8所示:图5.8 菱形绘制方法菱形移动响应的方法实现如图5.9所示:图5.9 菱形移动响应方法5.7圆圆具有二个关键属性,圆心坐标和半径。当绘制类型为圆时,按下鼠标左键时取得圆心坐标,按着鼠标左键并拖动鼠标时,动态计算出圆的半径,释放鼠标时完成圆的绘制。圆的绘制方法如图5.10所示:图5.10 圆绘制方法移动圆的响应方法实现如图5.11所示:图5.11 移动圆响应方法判断点在圆上的方法如图5.12所示:图5.12 判断点在圆上的方法5.8任意三角形三角形是具有三个顶点三条边的几何图形,在三角形绘制中,只在确定三个关键点(即三个顶点)就可以绘制出三角形。绘制中是由鼠标左键按下的来确定三角形的关键点的,因为三角形有三个关键点,所以要判断鼠标按下的次数,当鼠标左键第一次按下时,记录鼠标坐标,并设置第一个关键点,第二次按下鼠标左键时,记录鼠标坐标,设置第二个关键点,第三次按下鼠标左键时,记录鼠标坐标,设置第三个关键点,当三个关键点都确定时,绘制出相应的三角形。在三角形的绘制过程中,可以动态的观察到三角形的形状。完成绘制后,也可以改变关键点的属性,可以选中三角形对其进行移动操作。三角形的绘制方法如图5.13所示:图5.13 三角形绘制方法绘制三角形时鼠标按下响应实现如图5.14所示:图5.14 绘制三角形鼠标按下响应方法5.9等腰三角形等腰三角形是三角形的特例,是有二边相等的三角形。等腰三角形类从三角形类派生,在绘制时利用三角函数确定二边相等,即二个底角相等来实现等腰三角形。在改变等腰三角形相关关键点时,其等腰有特性不会变。在绘制等腰三角形时,按下鼠标左键时确定第一个关键点,然后按着鼠标左键并拖动鼠标,将动态的绘制出等腰三角形,当释放鼠标左键时,确定第二个关键点,第三个关键点是根据另外二个关键点来动态确定的。等腰三角形的绘制方法如图5.15:图5.15 等腰三角形绘制方法绘制等腰三角形时按下鼠标左键的响应代码如图5.16所示:图5.16 等腰三角形鼠标按下响应实现方法绘制等腰三角形时按下鼠标左键并拖动鼠标的响应代码如图5.17所示:图5.17 等腰三角形拖动鼠标实现方法5.10等边三角形等边三角形是三边相等的特殊三角形,靠边三角形从三角形派生而来,具有三角形的特性,并具有三边相等的性质。绘制靠边三角形时,按下鼠标左键时确定第一个关键点,然后按着鼠标左键并拖动鼠标,可以动态观察到靠边三角形的形状,释放鼠标时取得当前鼠标坐标,设置第二个关键点,完成靠边三角形的绘制。第三个关键点是由第一关键点和第二关键点动态确定的。在改变等边三角形的属性时,其等边的性质不会变化,保持三边相等。在实现中借助三角函数来确定三边的相等性。等边三角形的绘制方法如图5.18所示:图5.18 等边三角形绘制方法由上面的代码可知,等边三角形的第三关键点是在绘制时动态确定的,即如图5.19所示:图5.19 等边三角形关键点的绘制方法绘制等边三角形时按下鼠标左键时的响应代码如图5.20:图5.20 等边三角形按下鼠标左键的响应代码按着鼠标左键并拖动鼠标时的响应代码如图5.21所示:图5.21 移动鼠标的实现方法5.11直角三角形直角三角形是特殊的三角形,是三角形的一个特例。实现直角三角形类时,从三角形类派生。直角三角形具有三角形的所有特性,并具有一个角是直角的特性。在绘制时始终保持其中一个角是直角。在绘制直角三角形时,按下鼠标左键时确定第一个关键点,然后按着鼠标左键并拖动鼠标,可以动态观察在直角三角形的形状,释放鼠标时确定第二关键点,完成直角三角形的绘制。第三个关键点是动态确定的,利用三角函数来动态计算出第三个关键点,并计算出相应的直角。直角三角形的绘制方法如图5.22所示:图5.22 直角三角形的绘制方法绘制直角三角形时按下鼠标左键时响应代码如图5.23所示:图5.23 鼠标左键活动响应代码按着鼠标左键并拖动鼠标时的响应代码如图5.24所示:图5.24拖动鼠标响应代码5.12带外接圆的三角形过三角形三个顶点确定的圆称为三角形的外接圆,任意三角形都有外接圆。带外接圆的三角形在绘制三角形时动态的计算出相应外接圆的圆心坐标和半径,并绘制出相应的外接圆。三角形的外接圆圆心,即外心,是三角形三边的垂直平分线的交点,它到三个顶点的距离相等。由三角形三个顶点来确定三角形的外心(即三角形外接圆圆心)的计算方法如图5.25所示:图5.25 三角形外接圆绘制方法三角形外接圆圆心确定后,就可以根据三角形外接圆的性质,外接圆圆心到三个顶点的距离相等,根据勾股定理可以计算出其相应外接圆的半径,计算方法如图5.26所示:图5.26 外接圆半径计算方法带外接圆的三角形的绘制方法如图5.27所示:图5.27 带外接圆的三角形绘制方法绘制带外接圆的三角形时按下鼠标左键时的响应代码如图5.28所示:图5.28 绘制带外接圆的三角形时按下鼠标左键时的响应代码按下鼠标左键并拖动时的响应代码如图5.29所示:图5.29 按下鼠标左键并拖动时的响应代码5.13任意多边形任意多边形是可以根据需要来确定多边形的边数,在实现时采用一个数组链表来保存相应多边形的顶点。绘制任意多边形时,由鼠标左键按下的次数来确定多边形的顶点数,并在移动鼠标时动态的绘制出相应的多边形形状,当双击鼠标左键时,确定多边形的顶点数,完成多边形的绘制。任意多边形的绘制方法如图5.30所示:图5.30 任意多边形的绘制方法在操作类型为选取时,可以选取绘制好的多边形,改变相应关键点的属性,移动多边形。其选取时的响应方法如图5.31所示:图5.31 操作类型为选取时的响应方法移动多边形时的响应方法如图5.32所示:图5.32 移动多边形时的响应方法5.14文字文字标记是对相应对象进行标记,对相关信息进行标注。当进行文字标记时,点击鼠标左键确定文字标记的左上角坐标,将相应文字标记由些坐标开始进行绘制。在文字标记的绘制过程中,当单击鼠标左键时,在确定文字标记左上角坐标时,也弹出一个文字输入框,在此文字输入框中输入相关的文字标记,按确定后完成文字标记的绘制。文字标记的绘制方法如图5.24所示:图5.24 文字标记的绘制方法当操作类型为选取时,可以对文字标记进行移动,编辑等操作,其移动响应方法如图5.25所示:图5.25 选取的响应方法编辑响应方法如图5.26所示:图5.26 编辑响应方法5.15曲线曲线是具有力的一系列相连的点。曲线的力提供了它的平滑度和移动角。基数样条是一系列相连的曲线。在一条曲线中,两个点之间基本上都不存在直线。曲线有两种类型:开放曲线和封闭曲线。封闭起始点和结束点为同一个点的曲线,除封闭曲线之外的曲线称为开放曲线。对曲线的绘制,可以改变力的大小,不同的力可以让曲线有不一样的平滑度和移动角。在绘制中,曲线由四个关键点和一个力确定。绘制曲线的响应方法如图5.27所示:图5.27 绘制曲线的响应方法绘制曲线时鼠标按下时的响应代码如图5.28所示:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!