您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页第19章.WPF开发基础

第19章.WPF开发基础

来源:华佗小知识


特别惠团购网(高品质、超低价) http://www.tebiehui.com

第19章 WPF开发基础

在Vista和Windows Seven火热发布的今天,很多用户都被Vista的特效所吸引,Vista和的Windows Seven的3D特效,以及毛玻璃等效果给操作系统带来了更新更好的用户体验,在这一系列功劳的背后,WPF占据着不小的功劳。

19.1 了解WPF

WPF(Windows Presentation Foundation)原代号为“Avalon”,是微软的新一代图形系统。WPF基于.NET 3.0构架,为开发人员进行Windows应用程序开发和2D/3D图形和多媒体提供了统一的描述方法。对于开发人员而言,WPF开发非常的简单,只要开发人员有一定的.NET基础,都能够快速上手WPF应用程序开发。

19.1.1 什么是WPF

WPF(Windows Presentation Foundation)是微软的新一代图形系统,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9和Direct 10技术的WPF不仅带来了非常绚丽的

特别惠团购网(高品质、超低价) http://www.tebiehui.com

3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,使得传统的2D界面可以模拟毛玻璃、3D等特效。

对于开发人员而言WPF提供了统一的Windows Form应用程序开发方法,并且开发人员通过使用WPF技术,能够使得Windows Form应用程序像动画一样展现在用户面前,用户能够得到良好的用户体验。WPF包含两个部分,这两个部分分别为引擎和编程框架。

1.WPF引擎

WPF引擎为开发人员和设计人员提供了统一的设计文档,开发人员能够像普通的Windows Form应用程序一样进行逻辑编程,设计人员能够通过使用XAML语言描述Windows Form应用程序中各个控件的风格,以实现动画效果。

WPF引擎还为设计人员提供了基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的运行时库,WPF让传统的Windows Form应用程序能够利用起现有的硬件软件资源,充分的利用Direct功能和硬件的编码解码功能进行窗体和控件的渲染。

2.WPF框架

WPF框架为媒体、用户界面设计和文档提供的解决方案比开发人员现有的解决方案都要好,WPF框架在设计时考虑了可扩展性和可维护性,开发人员能够在WPF中创建自己的控件,还可以通过对现有的WPF控件进行改造创建新的WPF控件。

WPF框架是用于形状、图像、视频、动画、文档、三维,以及用于放置控件和内容的面板的一系列

特别惠团购网(高品质、超低价) http://www.tebiehui.com

控件,这些控件和内容的面板的一系列控件是WPF框架的核心。WPF应用程序提供了若干WPF应用程序开发所需要的控件,开发人员同样能够对控件进行拖放操作实现应用程序布局和开发。

3.XAML基本概念

WPF应用程序引入了XAML,XAML是基于XML文档格式的一种标记语言,XAML能够描述Windows应用程序和用户界面。开发人员和设计人员能够使用XAML语言进行代码和界面布局的可重用性控制。而对于Web开发者而言,XAML是基于标记语言的,XAML同样包括属性描述,对于Web开发者,也能够轻松的使用XAML描述WPF应用程序。

WPF(Windows Presentation Foundation)为开发人员和设计人员提供了统一的图形、图像、界面、文档等设计和开发的统一的运行和操作方法,WPF使现有的Window应用程序能够充分的利用硬件软件的资源进行应用程序窗口渲染和优化,给用户以全新的Windows窗体应用程序体验。

19.2 WPF的应用范围

在现有的Window应用程序中,对于已经成熟的传统的WinForm应用程序而言,为何还要抛弃现有的成熟技术而使用WPF技术开发Window应用程序呢?在传统Window应用程序开发中,应用程序的表现形式往往是非常死板的,应用程序窗体很难实现像Web应用和Flash中的渲染效果,例如图形图像的渲染和文本的渲染。虽然现今对渲染的方法有很多其他的解决方案,包括遨游等浏览器的JavaScript渲染,但是这些都是将Window应用程序和Web应用程序整合的解决方案,并没有完全的解决Window应用程序中对窗体本身的渲染的困难问题。

在Vista应用程序开发中,Vista将应用程序窗体进行了效果的渲染,并没有使用Web应用的解决方案,直接通过WPF进行窗体和控件的渲染,实现了半透明等效果,让用户耳目一新,提高了用户体验。如图19-1所示。

图19-1 Windows窗体图形渲染

随着互联网和硬件的发展,显卡等硬件已经能够辅助CPU的运算实现动态解码,让CPU的使用率变得更低,让CPU专注处理内核运算,从而能够让网络游戏等大型的需要图形操作和运算的应用程序能够使用显卡的解码技术流畅运行。

使用WPF也能够使用显卡的硬件进行应用程序渲染加速,这也能够让WPF应用程序不会占用过多的CPU资源,WPF应用程序能够基于Direct9/10进行图形图像编程,而使用显卡加速能够充分的利用Direct9/10的资源提升应用程序的用户体验。

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

19.2 WPF和Microsoft Expression

在进行WPF应用程序的开发中,需要编写相应的XAML文档进行窗体的布局和渲染,在Visual Studio 2008中,并没有提供很好的支持WPF应用程序设计所需要的功能,例如动画操作和图形渲染。微软提供了Microsoft Expression软件套装,在Microsoft Expression软件套装中可以使用Microsoft Expression Blend 2进行WPF应用程序窗体的布局和渲染。

19.2.1 使用Microsoft Expression Blend设计WPF

Microsoft Expression Studio 2软件套装中,微软提供了Microsoft Expression Blend 2,用于提供WPF应用程序和Silverlight应用程序的图形开发和渲染,双击Microsoft Expression Blend 2图标打开Microsoft Expression Blend 2应用程序,如图19-2所示。

Microsoft Expression Blend 2和Microsoft Expression Studio 2软件套装一样,其的界面也是以黑色为主的界面。对于设计人员而言,设计人员更加偏好黑色界面以便将图形图像突出的显式在屏幕中。单击【新建】按钮,Microsoft Expression Blend 2会弹出一个新建框,开发人员能够选择相应的应用程序进行开发,如图19-3所示。

图19-2 Microsoft Expression Blend 2 图19-3 创建新建项

单击【WPF应用程序】按钮,并选择相应的位置就能够创建WPF应用程序。WPF应用程序创建后,

对于开发人员和设计人员而言,其Windows应用程序开发窗口很像一张画布。在WPF应用程序中,窗体可以想象成是一个画布,这个画布能够承载多媒体、图形、图像甚至是动画。WPF应用程序提供了默认控件,这些控件包括最常用的Button按钮控件,下拉框控件以便开发人员提供用户交互功能,如图19-4所示。

从图19-4中可以看出,WPF应用程序提供了Border、ListBox、Button、Label等常用控件,在Microsoft Expression Blend 2中,同样可以直接拖放到窗体中进行窗体布局,如图19-5所示。

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

图19-4 WPF资源库 图19-5 WPF应用程序窗体布局

Microsoft Expression Blend 2同Visual Studio 2008相似,Microsoft Expression Blend 2允许开发人员直接向窗体中拖动控件以实现控件的布局,但是Microsoft Expression Blend 2并不支持控件事件的响应。当开发人员在Microsoft Expression Blend 2中双击Button按钮控件时,并不会在相应的代码中自动创建方法,Microsoft Expression Blend 2仅仅为WPF应用程序布局提供了良好的支持,若需要为WPF应用程序编写事件,需要同Visual Studio 2008相配合。

19.2.2 WPF控件样式

使用Microsoft Expression Blend 2进行WPF应用程序开发很类似与Photoshop中进行图形图像编程。在Photoshop中进行图形图像编程时,可以针对某一个图形进行渲染,包括半透明、颜色和渐变等。在传统的Windows应用程序的开发中,如果需要让应用程序的背景或者某个按钮控件像动画一样呈现出渐变和半透明效果是非常困难的,在WPF中可以进行类似Photoshop的操作对WPF应用程序中的控件进行样式控制,如图19-6和图19-7所示。

图19-6 属性控制面板 图19-7 外观控制

图19-6和图19-7都是针对一个控件进行样式控制。使用Microsoft Expression Blend 2进行控件样式开发的过程中,每一个控件都包含一个属性面板,属性面板用于WPF应用程序中控件的样式的控制。在WPF中,窗体都是基于XAML文档进行编写和样式控制的,如果需要使用XAML文档进行样式开

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

发和控制,不得不记住很多属性,这样就让WPF应用程序的开发变得非常困难。在Microsoft Expression Blend 2中使用属性控制面板能够快捷的定义相应控件的属性。

使用Microsoft Expression Blend 2进行应用程序中进行样式控制非常容易。在Photoshop中对图形图像的编程可以直接使用画笔或渐变等工具进行样式控制,同样在Microsoft Expression Blend中可以像在Photoshop中一样进行属性配置就可以实现控件的不同样式的布局,如图19-8所示。

图19-8 Button控件样式控制

在图19-8中,可以通过样式选择选择不同的控件样式,从左到右分别为渐变样式、平铺样式、纯色样式和半透明样式。使用XAML进行样式控制示例代码如下所示。

上述XAML代码就描述了一个渐变控件,其中为控件定义了基本的属性,包括宽度和高度。在子节点中,通过使用LinearGradientBrush,GradientStop等属性实现了控件的效果。这些样式在传统的Windows应用程序开发中要实现是非常繁琐和困难的,而在WPF应用程序中能够方便的实现渐变和图形控件。

在属性控制面板中还包括很多其他的属性配置,这些属性包括不透明度、宽度、高度、文本对齐方式、窗体状态等,极大的方便了开发人员在开发过程中对样式的控制和封装,简化了开发人员对于窗体界面的开发。

19.2.3 浅谈XAML

使用Visual Studio 2008打开项目,就会发现WPF应用程序是通过使用XAML文档进行描述的。XAML是eXtensible Application Markup Language的英文缩写,其中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。WPF应用程序中大量的使用了XAML对应用程序窗体进行描述。

XAML是一种基于XML文档格式的标记语言。在WPF应用程序中,XAML用于描述窗体的样式、规则,以及事件的声明等,这种开发模型和ASP.NET中的代码隐藏页模型十分类似,这样就让XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面的开发模型。

由于XAML是一种标记语言,所以开发人员能够很快的学习XAML并将XAML投入到项目开发中。学习XAML只需要开发人员具备一定的HTML知识就能够快速的学习XAML的语法格式和掌握

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

XAML语法规范。

使用XAML进行窗体样式开发能够更加方便的协调开发人员和设计人员的工作,设计人员能够专注于窗体的样式控制使得开发人员能够专注于代码的编写,这样就有利于应用程序的开发。在WPF应用程序开发中,XAML能够方便的对应用程序中的控件,样式进行描述,示例代码如下所示。

上述代码通过使用XAML语法编写了使用平铺画笔进行渲染的按钮控件,其格式是按照XML文档的格式进行声明和编写的。创建一个富媒体的半透明控件,同样可以通过XAML进行控制,免除了C++/Java中复杂的编程实现,示例代码如下所示。

上述代码初始化了一个按钮控件并声明。在确定了初始状态后就需要拖动时间轴来确定动画播放的顺序,如图19-18所示。

图19-18 拖动时间轴

如图19-18所示,可以将时间轴拖放在2秒的位置。拖放后,可以直接在当前位置修改控件的属性。修改后当触发动画事件后,时间轴开始移动并且会随着时间轴进行控件属性的更改。当时间轴的时间指针移动到2秒位置时,属性就会更改成2秒时设置的样式,如图19-19和图19-20所示。

图19-19 初始状态 图19-20 实现动画

通过使用时间轴能够快速定义WPF动画效果,开发人员能够使用时间轴进行相应的动画操作而无需通过编程实现,这样就简化了开发人员对底层动画实现的复杂的操作,节约了开发周期。另外,设计人员也能够设计动画事件并专注与WPF动画的实现,而开发人员能够专注逻辑处理,可以将动画事件的实现交付给设计人员,形成明确的分工。

19.3.3 WPF事件处理

在Microsoft Expression Blend 2中只能控制WPF应用程序的样式,却无法进行事件处理开发,若需要进行WPF应用程序开发,就必须使用Visual Studio 2008。使用Visual Studio 2008打开Microsoft Expression Blend 2创建的解决方案,能够进行WPF应用程序事件开发,如图19-21所示。

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

图19-21 使用Visual Studio 2008打开解决方案

在Visual Studio 2008中进行WPF应用程序开发会呈现两个窗口,一个窗口用于直接进行Windows窗体布局,另一个窗口用于呈现相应的XAML文档。在Visual Studio 2008中,可以直接修改XAML文档进行WPF样式控制,示例代码如下所示。

上述代码直接修改XAML代码就可以实现Windows窗体样式的控制。与Microsoft Expression Blend 2不同的是,在Visual Studio 2008中双击按钮控件,在就会在cs文件中自动创建相应的事件代码,开发人员可以在相应的区域中编写代码,示例代码如下所示。

private void button_Click(object sender, RoutedEventArgs e) {

button.Content = \"按钮控件被按\"; }

//触发事件

上述代码运行后如图19-22和图19-23所示。

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

图19-22 按钮初始化 图9-23 动画事件和按钮事件

注意:WPF应用程序中的一些属性可能和Win From和ASP.NET中的一些属性不同,例如在Win From和ASP.NET中按钮控件上的文本是通过Text属性控制的,而在WPF中使用的是Content属性。

WPF应用的开发和Win Form应用程序的开发没有特殊的区别,但是WPF应用提供了更好的用户体验。WPF不仅能够提供动画事件同样也能够执行Win From应用程序开发中所需要的事件。

19.4 WPF系统开发

WPF能够开发用户体验更好的Windows应用程序,通过使用WPF技术,能够实现可扩展的容易维护并且用户体验友好的Windows应用程序。在微软本身的产品中,很多应用也使用了WPF技术,包括Vista以及Expression。

19.4.1 WPF系统需求

在Windows应用程序开发中,常常需要进行数据查询,例如一个图书管理系统,借读的读者往往很难在诸多图书当中寻找一个适合自己的书,例如如果读者希望借一本关于ASP.NET的书,但是图书馆中包含了很多关于ASP.NET的书,读者曾经看过了一本关于ASP.NET 3.5的书,希望能够找到该书,但是在图书馆中找了半天都找不到这本书,读者就会想“如果能够查询该书就好了”。

开发人员可以很快的进行图书管理系统的编码并进行查询分析,现在读者可以在图书馆电脑中查询ASP.NET 3.5开发大全了,但是查询出来的结果显示的并不那么友好,而且界面颜色单调,这就需要Windows应用程序具有较好的用户体验。WPF应用程序就能够实现较好的用户体验,同样也可以实现普通Windows应用程序所能够完成的需求。

19.4.2 WPF界面开发

为了实现较好的用户体验,首先需要进行良好的WPF界面开发和布局。WPF支持PNG,JPG等图片资源作为WPF应用程序的背景,所以WPF应用程序能够实现半透明等多种渲染效果,WPF系统登录界面和查询界面如图9-24和图9-25所示。

雀动网 http://www.quedong.com 家庭购物的电子商务网站

特别惠团购网(高品质、超低价) http://www.tebiehui.com

图9-24 图书系统初步布局 图9-25 用户查询界面布局

WPF能够支持PNG,JPG等格式的图片文件,所以在WPF窗体开发中能够使用渐变效果填充窗体并可以直接使用PNG图片进行窗体渲染。登录窗体包含了一个图片文件,图片文件的XAML代码如下所示。

注意:PNG图片支持透明效果,而其他的图片格式的文件可能不支持半透明效果,WPF支持半透明图片作为资源文件。

通过XAML文档能够定义图片文件并定义一些常用控件,为了实现以上的WPF界面布局,WPF应用程序窗体的XAML代码如下所示。

xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" x:Class=\"_19_4.Window1\" x:Name=\"Window\" Title=\"图书管理系统\"

Width=\"500\" Height=\"500\"

FontFamily=\"Microsoft YaHei\"

xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"

xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"d\"> …………………….

上述代码通过XAML实现了一个基本的Windows窗体,该窗体的头部信息为图书管理系统,并且定义了窗体的高度和宽度为500,窗体内的字体样式为微软雅黑。在WPF窗体中,还需要定义Label控件和TextBox等控件,用于实现基本的人机交互,其XAML代码如下所示。

特别惠团购网(高品质、超低价) http://www.tebiehui.com

VerticalAlignment=\"Top\" Height=\"30.117\" Content=\"读者您好,欢迎查阅我图书馆资料\"/>

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务