




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于GDI+2D图形软件开发方法初探2D几何画板摘要基于GDI2D图形软件开发方法初探2D几何画板,是采用Microsoft Visual C 2.0为开发语言,Microsoft .NET Framework 2.0为支撑平台开发的用于研究二维图形的图形软件。矚慫润厲钐瘗睞枥庑赖。2D几何画板的开发,主要是研究GDI+技术在二维图形软件中的开发方法的探索。在该系统中,实现一些基本的图形绘制,如点、线、圆的绘制,及一些自定义图形的绘制,如多边形,曲线,带外接圆的三角形的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。聞創沟燴鐺險爱氇谴净。2D几何画板除了实现基本的图形的绘制外,还实现了共点运动,可以动态的观察二维空间中关联对象的共点运动,当某个对象的相关属性改变时,对其他关联对象的影响;还可以精确的定位相关对象的相关属性,如圆的半径,曲线的张力等。残骛楼諍锩瀨濟溆塹籟。本论文首先介绍了项目开发的背景,相关开发工具、开发语言和平台的介绍,然后是系统的总体设计,系统的详细设计,包括窗口界面,图形绘制模块,测量模块,2D函数图形绘制模块,序列化模块的设计。酽锕极額閉镇桧猪訣锥。关键词:面向对象;命名空间;序列化;GDI+;图元GDI+ Based 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 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引言1渗釤呛俨匀谔鱉调硯錦。2开发背景3铙誅卧泻噦圣骋贶頂廡。2.1当代信息技术的发展现状3擁締凤袜备訊顎轮烂蔷。2.1.1当代信息技术的发展3贓熱俣阃歲匱阊邺镓騷。2.1.2计算机处理能力的发展3坛摶乡囂忏蒌鍥铃氈淚。2.2 .NET框架的简介4蜡變黲癟報伥铉锚鈰赘。2.2.1 .Net框架简介4買鲷鴯譖昙膚遙闫撷凄。2.2.2 .Net框架的组成4綾镝鯛駕櫬鹕踪韦辚糴。2.2.3.Net框架的特性5驅踬髏彦浃绥譎饴憂锦。2.2.4 .Net的名字空间6猫虿驢绘燈鮒诛髅貺庑。2.2.5 .Net2.0平台介绍7锹籁饗迳琐筆襖鸥娅薔。2.3 C简介7構氽頑黉碩饨荠龈话骛。2.3.1什么是C#7輒峄陽檉簖疖網儂號泶。2.3.2 C#的特点8尧侧閆繭絳闕绚勵蜆贅。2.3.3 C#的语言特性9识饒鎂錕缢灩筧嚌俨淒。2.4 GDI+简介10凍鈹鋨劳臘锴痫婦胫籴。2.4.1什么是GDI+10恥諤銪灭萦欢煬鞏鹜錦。2.4.2 GDI+的体系结构图11鯊腎鑰诎褳鉀沩懼統庫。2.4.3 GDI+的构成11硕癘鄴颃诌攆檸攜驤蔹。2.4.4 GDI+的新特色12阌擻輳嬪諫迁择楨秘騖。3系统总体设计15氬嚕躑竄贸恳彈瀘颔澩。3.1系统总体结构15釷鹆資贏車贖孙滅獅赘。3.2系统模块结构16怂阐譜鯪迳導嘯畫長凉。3.3系统类结构16谚辞調担鈧谄动禪泻類。3.4系统运行环境19嘰觐詿缧铴嗫偽純铪锩。3.5规格说明19熒绐譏钲鏌觶鷹緇機库。4系统窗体界面设计21鶼渍螻偉阅劍鲰腎邏蘞。4.1设计原则21纣忧蔣氳頑莶驅藥悯骛。4.2界面详细设计21颖刍莖蛺饽亿顿裊赔泷。5图形绘制模块设计25濫驂膽閉驟羥闈詔寢賻。5.1基类25銚銻縵哜鳗鸿锓謎諏涼。5.2点26挤貼綬电麥结鈺贖哓类。5.3线段26赔荊紳谘侖驟辽輩袜錈。5.4矩形27塤礙籟馐决穩賽釙冊庫。5.5正方形28裊樣祕廬廂颤谚鍘羋蔺。5.6菱形28仓嫗盤紲嘱珑詁鍬齊驁。5.7圆29绽萬璉轆娛閬蛏鬮绾瀧。5.8任意三角形30骁顾燁鶚巯瀆蕪領鲡赙。5.9等腰三角形31瑣钋濺暧惲锟缟馭篩凉。5.10等边三角形32鎦诗涇艳损楼紲鯗餳類。5.11直角三角形33栉缏歐锄棗鈕种鵑瑶锬。5.12带外接圆的三角形34辔烨棟剛殓攬瑤丽阄应。5.13任意多边形36峴扬斕滾澗辐滠兴渙藺。5.14文字38詩叁撻訥烬忧毀厉鋨骜。5.15曲线39则鯤愜韋瘓賈晖园栋泷。5.16选取40胀鏝彈奥秘孫戶孪钇賻。6 2D函数图形绘制模块设计43鳃躋峽祷紉诵帮废掃減。6.1实现原理43稟虛嬪赈维哜妝扩踴粜。6.2公式分析器43陽簍埡鲑罷規呜旧岿錟。6.3绘制图形46沩氣嘮戇苌鑿鑿槠谔應。7序列化模块设计51钡嵐縣緱虜荣产涛團蔺。7.1序列化类型51懨俠劑鈍触乐鹇烬觶騮。7.1.1 Shallow Serialization51謾饱兗争詣繚鮐癞别瀘。7.1.2 Deep Serialization51呙铉們欤谦鸪饺竞荡赚。7.2持久存储52莹谐龌蕲賞组靄绉嚴减。7.3按值封送52麸肃鹏镟轿騍镣缚縟糶。7.4基本序列化53納畴鳗吶鄖禎銣腻鰲锬。7.5选择性序列化54風撵鲔貓铁频钙蓟纠庙。7.6自定义序列化55灭嗳骇諗鋅猎輛觏馊藹。7.7序列化过程的步骤57铹鸝饷飾镡閌赀诨癱骝。7.8版本控制57攙閿频嵘陣澇諗谴隴泸。7.9序列化规则58趕輾雏纨颗锊讨跃满賺。8结 论59夹覡闾辁駁档驀迁锬減。参考文献61视絀镘鸸鲚鐘脑钧欖粝。致 谢63偽澀锟攢鴛擋緬铹鈞錠。1 引言1引言用GDI+开发一个2D几何画板,主要实现一些基本的图形绘制,如点、线、圆的绘制,及一些自定义图形的绘制,如多边形,射线,直线的绘制;实现基本的测量,如角度的测量,长度的测量,跨度的测量等;实现直角坐标系函数轨迹图形的绘制,要求为输入一个函数表达式的字符串,然后自动绘制出相关的轨迹图形;对绘制结果实现序列化,实现可以重复操作图元;图元的存储、选取、修改,实现图元的动态性,如选中对象时可以拖动,改变大小等。緦徑铫膾龋轿级镗挢廟。- 65 -2 开发背景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系统总体设计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系统窗体界面设计图形界面是人机交互的接口,提供了直观,方便的操作。在界面设计中,应遵循美观、舒适、操作方便、结构合理等要求。繅藺詞嗇适篮异铜鑑骠。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图形绘制模块设计图形绘制模块主要负责系统基本图形及自定义图形的绘制,如点,线,圆,矩形,曲线,带外接圆的三角形等。基于面向对象的设计思想,所有图元对象都从一个基类派生,基类定义一些共有的属性和方法,从它派生的类重写基类的相应方法来实现各自特有的动作。 檁傷葦开阈灯伞馑諧粮。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点点是基本的对象之一,它由一个坐标确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年共青团工作实践案例分析题集及解析
- 安徽降噪屏障施工方案
- 钢斜梯安装施工方案
- 2025年乡村全科医学考试模拟试题及答案
- 2025企业违约撤销合同解除劳动关系情形
- 河北省保定市2025年-2026年小学六年级数学期中考试(上学期)试卷及答案
- 第2课 设计纹样教学设计-2025-2026学年初中美术人教版八年级下册-人教版
- 2025年合作伙伴销售协议本
- 2025年初级香材鉴别师考试模拟试题及答案
- 2025年农业技术专家应聘面试全攻略专业问题解析与实战演练
- 2025上海市食品药品包装材料测试所公开招聘笔试参考题库附答案解析
- Unit 1 What's he like Part B Read and write英语教学课件
- 湘少版(三起)(2024)三年级上册英语全册教案
- 小屁孩日记阅读课件
- 医务人员职业道德准则(2025年版)全文培训课件
- 2025年职业指导师中级专业能力试卷:就业指导实务操作技能
- 产业园区建设汇报
- 保健公司客户服务流程规定
- 2025 整形外科面部痤疮瘢痕修复外科查房课件
- 赵子龙课件教学课件
- 肾脏先天畸形超声检查
评论
0/150
提交评论