基于WPF的大学简易观光图示系统设计毕业设计.docx
《基于WPF的大学简易观光图示系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于WPF的大学简易观光图示系统设计毕业设计.docx(40页珍藏版)》请在冰豆网上搜索。
![基于WPF的大学简易观光图示系统设计毕业设计.docx](https://file1.bdocx.com/fileroot1/2023-7/25/decd5061-7258-407e-afc6-2540bf98ff90/decd5061-7258-407e-afc6-2540bf98ff901.gif)
基于WPF的大学简易观光图示系统设计毕业设计
毕业设计(论文)
基于WPF的大学简易观光图示系统设计
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
摘要
随着用户需求复杂化,目前大部分应用程序已逐渐不能满足更高、更全方位的用户体验要求。
为给用户提供更具视觉效果的体验,微软在最新发布的WindowsVista开发库中引入全新的图形子系统WindowsPresentationFoundation(WPF)。
本设计是对WPF结构及其所提供的技术和方法进行初步探讨,并应用WPF技术设计实现xx大学简易观光图示系统。
本设计以.NETFramework3.0技术为背景,采用统一编程模型,确定设计和代码分离的开发框架。
使用微软最新开发工具ExpressionBlend开发用户界面和控件,运用WPF提供的服务及对3D图形的支持,实现3D程序框架及绚丽的用户体验,并将其生成为XMAL资源文档。
最后在VS2005中导入相关资源文档,实现后台逻辑代码并导入XML数据存储文档,初步实现具有较丰富用户体验,可按院系浏览校园风光的简易观光系统。
关键词:
WPF;XAML;3D
ThedesignofWPF-basedHunanUniversitysimpletouristsystem
Abstract
Astherequirementsofusersbecomemoreandmorecomplex,themajorityofapplicationshavegraduallyfailedtomeetusers'demandforgreaterandall-rounduserexperiencenow.InordertoprovidemoreeffectivevisualexperiencetoUI,MicrosoftbringsoutanewgraphicssubsystemnamedWindowsPresentationFoundation(WPF)inthelatestreleaseofWindowsVistadevelopmentlibrary.
ThemaincontentofthepresentdesignistodiscussWPF'sstructure,thetechniquesandmethodsitprovides.Onthebackgroundoftechniquesof.NETFramework3.0,thepresentdesignusesaunifiedprogrammingmodelunderwhichUIandthelogicalcodeareseparated.Inthisdesign,theUIandcontrolsaredevelopedbythelatestMicrosoftdevelopmenttool,ExpressionBlend,usingWPFservicesandsupportof3Dgraphicstoimplementthe3DapplicationframeworkwithgorgeousUI.TheseUIdesignsshouldbebuiltintoXAMLresourcedocumentandimportedtoVS2005.Lastly,theXAMLresourcedocumentwillbeintegratedwithhiddenlogicalcodeandXMLdatafilesintheVS2005.Thepresentdesignimplementsasimpletouristsystemwithrichuserexperience,whichenablesusertoviewthecampus'scenerybyacademy.
Keywords:
WPF;XAML;3D
1.绪论
1.1课题背景及目的
UI即UserInterface(用户界面)的简称。
UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。
UI设计以用户体验为衡量标准,优秀的UI设计可使软件的操作变得舒适、简单、自由,可充分体现软件的定位和特点。
视窗界面出现开始,UI进入一个较快发展的历史时期。
随后几年中涌现很多具有历史意义的界面风格,其中应用最普遍的是Windows窗口风格。
在WindowsVista之前,Windows平台的图形系统主要有:
GDI、GDI+、Direct3D,其中GDI的应用领域最为广泛。
GDI(GraphicsDeviceInterface,即图形设备接口),是WindowsAPI(ApplicationProgrammingInterface)的一个重要组成部分。
GDI图形系统已经形成多年,它提供2D图形处理、文本处理,以及图像处理功能。
它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,只需在一虚拟逻辑设备中进行操作。
虽然GDI提供上述功能,但仍在编程模式、图像处理和显示卡加速支持方面有所欠缺。
为弥补上述缺陷,GDI+于2002年被提出。
它引入2D图形反走样、浮点数坐标、渐变以及单个象素的Alpha支持,并新增渐变画刷、基数样条函数、持久的路径对象、变形和矩阵对象、可伸缩区域、Alpha混合和丰富的图像格式支持等功能。
但GDI+没有任何硬件加速功能。
虽然图形系统在持续发展,另一方面,计算机硬件发展和用户需求发展却更为迅速。
首先,当今计算机处理芯片飞速发展,特别是显示芯片的功能日益强大。
显示卡从早期的单色显示卡、彩色显示卡、加强型绘图显示卡发展到今天的3D加速卡、3D绘图显示卡,基本都具有T&l、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等技术,可支持Direct3D、OpenGL等三维图形处理库,但显示芯片强大的处理能力却没有得到充分的应用。
目前,显示卡GPU的处理能力大多只应用在游戏和多媒体领域,UI方面使用得极少。
其次,随着硬件、软件技术的发展,用户对软件的要求并不止于功能性方面,更包括许多非功能性质量如安全性、可用性、可维护性等,其中尤其突出的是对开发具有高度互动性、丰富用户体验以及功能强大的客户端的需求。
为适应硬件发展和用户需求变更,给用户提供最强的体验,满足不断提高的用户视觉需求,各大技术发布商纷纷提出新的图形解决方案。
其中最具影响力的是微软发布的图形子系统WPF和Macromedia发布的Flash/Flex。
WindowsVista引入的全新的图形子系统WPF,它采用新的显示驱动模型能,充分利用显示卡的处理能力,可向用户提供震撼的视觉效果和用户体验。
考虑到WPF具有更广阔的可操作空间、更高的执行效率和更丰富的本地资源支持。
本毕业设计选定以WPF为基础,系统了解Framework3.0开发基础和WPF应用环境。
通过引入统一的编程模型,运用WPF提供的控件新特性、新控件及对3D图形的支持,初步实现可按院系浏览校园风光的简易观光系统,达到丰富客户体验、强化交互性能、优化用户界面的目的。
并在此基础上,将WPF与现有图形系统GDI+进行对比,详细分析WPF作为下一代图形系统的优越之处。
1.2国内外研究状况
近年来,为满足不断提高的用户体验需求,各大技术发布商纷纷提出可优化表现的新图形系统和技术解决方案。
除微软WPF外还有Flash/Flex、Apollo、XUL、Bindows等,下面将简要介绍这些技术和系统。
微软公司于2003在年洛杉矶微软专业开发者大会(PDC)中公布Avalon,将其视为下一代用户界面技术。
在2005年PDC中,微软公司展示更加完整的Avalon版本,并将其正式定名为WPF。
目前,WPF已完成由演示软件经alpha版本API到如今BETA版转变。
Flash/Flex由Macromedia公司发布,Flex是可运行于J2EE和.NET平台的表示服务器和应用程序框架。
Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。
Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。
该语言由Flex服务器翻译成SWF格式的客户端应用程序,在FlashPlayer中运行。
据Macromedia称已有98%以上桌面系统的浏览器都已安装MacromediaFlashPlayer,这使得该技术可以支持种类广泛的平台和设备。
Apollo是由Adobe公司发布的一款客户端软件,无需浏览器就能够运行Flash应用。
Apollo将使开发人员能够开发同时显示Flash动画、HTML网页、PDF文件的应用,它的设计理念是在保留Web优点的同时,克服现有应用的局限性,优化软件表现。
XUL(XMLUserInterfaceLanguage)是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目,可用于建立窗体应用程序。
这些应用程序不但可以在Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(FlashMX组件)和Thinleys(Java实现)。
XUL描述引擎非常小,它可以使用、生成XML数据。
XUL的一个主要缺点在于目前还没有获得一个主要商业实体的支持。
XUL最大的优点在于与Gecko引擎的集成而可能满足大量Web标准,以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。
Bindows是用Javascript和DHTML开发的Web窗体框架。
Javascript用于客户端界面的显示和处理,XML-HTTP用于客户端与服务器的信息传输。
Javascript在客户端的表现力不容置疑,利用Javascript几乎可以实现Windows应用程序所能实现的大部分功能,XML-HTTP一直以来常被用于实现“无刷新”的Web页面,和Javascript配合,可以完成数据从服务器和客户端的传输。
Bindows的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。
这点Bindows根本没有遵循“用多少去多少”的准则。
另外,Bindows内部大量利用IE6的技术,没有考虑到非IE的浏览器,而限制Bindows的流行。
为实现丰富用户体验,各种技术纷纷涌现,上述只是其中具有代表性的几种。
它们一部分已投入实际应用,而另一部分因种种限制,并未广泛应用,需要更进一步的发展。
1.3系统设计研究方法
本设计以微软.NETFramework3.0技术为背景,采用如下三个步骤:
1.采用统一编程模型,确定用户界面和逻辑分离的开发框架;
2.使用微软最新开发工具ExpressionBlend开发用户界面和控件,运用WPF提供的控件新特性、新控件及对3D图形的支持,实现3D程序框架及绚丽的用户界面效果,并将其生成为XMAL资源文档;
3.在VS2005中导入相关资源文档,实现逻辑代码并导入XML数据存储文档,初步实现具有较丰富用户体验,可按院系浏览校园风光的简易观光系统。
1.4论文构成及研究内容
本论文对WPF开发环境、WPF结构、WPF开发方法进行全面论述,概要说明基于WPF的xx大学简易观光图示系统如何设计与实现,并在实践基础上详细阐述WPF的优越性。
具体包括以下部分:
1.WPF简介
(1)WPF技术特点
(2)XAML简介
2.WPF优越性详细分析
(1)声明式编程
(2)触发器
(3)一致的Style
(4)丰富的应用程序文本
(5)可修改的UI布局
(6)3D图形支持
(7)整体优越性
3.xx大学简易观光系统实现
(1)系统环境
(2)开发环境
(3)总体开发方案
(5)UI设计端开发步骤
(6)程序端开发步骤
2.WPF简介
2.1WPF技术特点
WPF是WindowsVista中新的关键图形子系统,它为用户界面、2D和3D图形、文档和媒体提供统一的方法。
WPF在.NETFramework基础上生成,并利用Direct3D进行基于向量的呈现,为生成所有种类的浸入式应用程序提供强大的解决方案。
另外,WPF通过提供声明性编程模型实现“工具性”和灵活性,从而使设计人员成为开发过程不可分割的组成部分。
WPF由两个主要部分组成:
引擎和编程框架。
下将分别介绍这两部分。
2.1.1WPF引擎
WPF引擎统一开发人员和设计人员体验文档、媒体和UI的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供一个单一的运行时库。
WPF使得应用程序不仅能充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。
例如,WPF的基于矢量的呈现引擎使应用程序可以灵活地利用高DPI监视器,而无需开发人员或用户进行额外的工作。
同样,当WPF检测到支持硬件加速的视频卡时,它将利用硬件加速功能。
下面分图形系统和核心组件两方面介绍WPF引擎。
2.1.1.1WPF图像系统
如概述中所介绍,当前的Windows图形平台(GDI)具有跨越将近二十年的传统。
在过去数年中,3D领域已经发生巨大的变革,目前的图形硬件进步主要集中于3D管线,但GDI开发并未有相应的发展。
WPF被设计为基于较旧2D技术图形系统的完全替代物,并且最大限度地使用现代PC的图形功能。
图形图像表示的优化是WPF的一个重要优点。
WPF图形系统如图2.1所示[1]:
图2.1WPF图形系统
WindowsVista图形系统中关键的改进是引入新的显示驱动模型WDDM(WindowsDesktopDriverModel)。
前面曾提及计算机有大量显卡资源被闲置,为能安全、高效地利用这些资源,WDDM驱动模型提供与操作系统虚拟化内存以便多个应用程序同时运行相类似的功能。
它虚拟化显卡的资源(主要是显示内存),提供一调度程序,使多个基于Direct3D的应用程序,如WPF应用程序和基于WPF的WindowsVista桌面窗口管理器,可以共享显卡,而WDDM的健壮性、稳定性也得到显著提高。
大量的驱动操作从内核模式移动到用户模式,这样不仅能提高安全性,还可简化显示驱动的开发过程[1]。
WPF为应用程序和内容提供主流图形服务。
它提供一个应用程序模型,该模型利用在现代图形卡中流行的3D硬件支持。
WPF更加注重基于向量的内容;它的协调系统提供双精度、独立于分辨率的像素寻址,从而为高DPI显示提供支持;本机坐标系基于双精度数据类型。
新呈现模型具有无需完成额外工作即可应用图像转换的附带功能。
WPF还是更为广泛的图形生态系统的一个必不可少的组件。
例如,它利用新的WindowsVista显示驱动程序模型,可与打印模型共享功能,并且具有通过终端服务实现的高保真远程处理,还为旧的显示硬件提供版本返回解决方案。
WPF适当地利用硬件呈现。
它使用Direct3D在DirectX7以上版本中提供加速呈现,并用PixelShader2.0硬件进一步优化图形卡。
对于不具有上述功能的计算机,WPF使用软件呈现,即一个基于CPU的SSE和SSE2优化光栅化程序。
当WPF无法使用硬件管线呈现某些内容,并且无法保证可以在所有计算机硬件配置中使用呈现输出时,也会使用该程序。
2.1.1.2WPF核心组件
大部分WPF编程模型是由托管代码实现。
图2.2显示WPF的主要组件。
其中灰色标注是WPF组件的主要代码部分。
注意图中的milcore组件的职责是完成与Direct3D的交互。
并且出于效率考虑,milcore由非托管代码实现。
PresentationFramework和PresentationCore都位于通用语言运行(CLR)之上。
很显然,WPF的大部分代码都是以托管形式存在。
当然,在一些显示卡不支持所需要的功能时,WPF也已提供稍微低效的软件实现,以此来支持在某些PC上运行WPF应用程序[3]。
图2.2WPF图形系统
2.1.2WPF框架
WPF框架在媒体、用户界面设计和文档方面为开发人员提供各种解决方案。
WPF的设计将可扩展性考虑在内,使开发人员可以完全在WPF引擎的基础上创建自己的控件,也可以通过对现有WPF控件进行再分类来创建自己的控件。
WPF框架的核心是用于形状、文档、图像、视频、动画、3D支持以及用于放置控件和内容的面板的一系列控件。
这些自有控件为开发下一代用户体验提供构造块。
作为下一代图形子系统,WPF集成各种输出服务:
用户界面、二维和三维图形和图像、基于文档的打印和呈现、语音以及音频和视频服务。
通过为所有这些服务提供基于一个框架的托管代码,WPF使提供新的、丰富的用户体验成为可能,这在以前很难实现。
WPF的框架为.NET开发人员所熟悉,最终将减少构建数据绑定应用程序所需的代码。
此外,WPF引入新的增强服务(例如动画),同时保留与为GDI/GDI+编写的现有代码的互操作性。
WPF框架所提供的服务如表2.1[3]所示:
表2.1WPF服务
基本服务
XAML,PropertySystem,Input&Eventing,Accessibility
媒体服务
2D,3D,Audio,Video,Text,Imaging,Animation,Effects,CompositionEngine
文档服务
XPSDocuments,OpenPackagingConventions
用户界面服务
ApplicationServices,Deployment,Controls,Layout,DataBinding
本文随后将对其中某些服务进行详细论述。
2.2XAML语言简介
在上一部份WPF框架中已经提到,WPF框架提供XAML基本服务。
WPF中XAML的引入向开发者提供UI设计和代码分离的编程模型。
XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发。
本设计所有UI代码都采用XAML开发。
下面将详细介绍XAML。
2.2.1XAML综述
XAML(eXtensibleApplicationMarkupLanguage)的中文名为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新描述性语言。
XAML提供一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的代码后置模型非常类似。
XAML能够很好地将用户界面设计与代码相分离,使图形设计人员可以创建引人注目的、高度精确的用户界面,使开发人员能够将精力集中在应用程序逻辑上。
这个应用程序开发协作模型使开发人员和设计人员能够紧密而有效地协同工作。
这种代码与界面开发分离的编程模型可为程序开发带来如下便利:
UI设计者可集中精力将设计工作做得更好,同时可得到更有效的开发者支持。
随着软件外包和订购的逐渐风行,WPF使得一些商业设计者能更好的从事界面设计工作,并集成一些简单功能,而购买的核心代码能够独立的完成内部的一些关键逻辑而不干扰设计过程。
更好的支持应用软件的国际化。
不同的独立的界面可以使用不同的本地化方案,而内部的代码通用。
支持软件的“空标签”,可以为不同的用户采用定制的界面而保持核心的逻辑不变。
开发者创建程序逻辑,然后为不同的用户使用不同的界面并贴上他们的商标等。
XAML简化.NetFramework3.0编程模式中的用户界面创建过程,使用XAML开发人员可以对WPF程序的所有用户界面元素,例如文本、按钮、图像和列表框等进行详细的定置,同时还可以对整个界面进行合理化的布局,这与使用HTML非常相似。
但是由于XAML基于XML,所以它本身是一个组织良好的XML文档,而且相对于HTML,它的语法更严谨、更明确。
预计以后大部分的XAML都可由相应的软件自动生成,就如同现在制作一个静态页面时,几乎不用编写任何HTML代码就可以直接通过Dreamweaver软件生成一个美观的页面。
大多数的WPF程序可能同时包含程序代码和XAML。
开发者可使用XAML定义应用程序的初始界面,而后才编写相应的功能实现代码。
同时也可将逻辑代码直接嵌入到一个XAML文件中,也可将它保留在一个单独的文件中。
实际上,能够用XAML实现的所有功能都可以使用程序代码来完成。
但一般而言,程序代码的优势在于流程处理和逻辑判断,而不是界面的构建。
而XAML则是集中关注于界面的编程,开发者可以将它和其它的.NET语言配合使用,从而构建出一个功能完善、界面美观的WPF程序[4]。
2.2.2XAML特点
XAML是可扩展的,开发人员可以创建自定义的控件、元素和函数来扩展XAML。
而且由于XAML各元素在本质上就是WPF类的映射,开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。
即开发人员可以开发一些自定义控件和组合元素,并将它公开给用户界面设计人员和其它的开发人员使用。
XAML是一种纯正的、用来描述用户界面构成元件和编排方式的标记语言。
尽管有部分的XAML语法具备程序设计语言的特性(例如XAML中的Trigger和Transform),但是XAML并不是一种用于程序设计的语言,它的功能也不是为执行应用程序逻辑。
XAML是一种解析性的语言,尽管它也可以被编译。
微软推荐XAML被编译成二进制语言程序标记语言BAML。
XAML和BAML都可以被WPF解析,并且以一种和HTML相似的方式进行界面的呈现。
但是和HTML不同的是,XAML是强类型化的,即HTML会忽略那些它不能识别的元素和属性,而XAML必须在识别所有的元素和属性的情况下,才对页面进行呈现。
尽管在XAML中各个属性都是以字符串(例如Background)表示,但是这些字符串实际上代表的是WPF中的对象,只有被WPF识别的对象才可以作为元素的属性。
XAML和WPF类库紧密相关,所有可以在XAML中使用的元素其实都是一个类,例如<Button>元素就与类库中的System.Windows.Controls.Button相对应。
正是因为上述的继承关系以及XAML中的每个元素均代表一个WPF类,所以XAML也存在一些面向对象体系结构的特性。
例如,一个元素派生自另外的一个XAML元素,那么该元素将继承其父元素的特性。
开发者也可以将自己编写的类用作XAML的元素,正如XAML