2024年1月5日发(作者:)

wpf技术

全称Windows Presentation Foundation

Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于

Windows 的统一显示子系统,它通过 WinFX 公开。它由显示引擎和托管代码框架组成。Windows Presentation Foundation 统一了 Windows 创建、显示和操作文档、媒体和用户界面 (UI) 的方式,使开发人员和设计人员可以创建更好的视觉效果、不同的用户体验。

Windows Presentation Foundation 发布后(计划在 2006 年),Windows XP、Windows Server 2003 和以后所有的 Windows 操作系统版本都可以使用它。

Windows Presentation Foundation

Windows Presentation Foundation 由两个主要部分组成:引擎和编程框架。

? Windows Presentation Foundation 引擎。Windows Presentation Foundation

引擎统一了开发人员和设计人员体验文档、媒体和 UI 的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的运行时库。Windows

Presentation Foundation 使得应用程序不仅能够充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。例如,Windows Presentation Foundation

的基于矢量的呈现引擎使应用程序可以灵活地利用高 DPI 监视器,而无需开发人员或用户进行额外的工作。 同样,当 Windows Presentation Foundation 检测到支持硬件加速的视频卡时,它将利用硬件加速功能。

? Windows Presentation Foundation 框架。Windows Presentation Foundation

框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。Windows Presentation Foundation 的设计考虑了可扩展性,使开发人员可以完全在

Windows Presentation Foundation 引擎的基础上创建自己的控件,也可以通过对现有

Windows Presentation Foundation 控件进行再分类来创建自己的控件。Windows

Presentation Foundation 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件。这些“自有控件”为开发下一代用户体验提供了构造块。

Microsoft 在引入 Windows Presentation Foundation 的同时,还引入了 XAML,这是一种公开表示 Windows 应用程序用户界面的标记语言,可使开发人员和设计人员用来构建和重用 UI 的工具更加丰富。对于 Web 开发人员,XAML 提供了熟悉的 UI 说明模式。XAML 还使 UI 设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。

为什么选择 Windows Presentation Foundation?

对于企业,Windows Presentation Foundation 实现了改进的客户关系和不同的应用程序。通过提供能够快速提供更好的视觉效果、独特的用户体验的技术,来建立与客户的

密切关系,使企业可以建立稳定的数字客户关系和独特的品牌化机会。而且,由于 Windows

Presentation Foundation 是窗体、文档、视频、三维以及其他功能的综合,因此企业可以创建持久的用户体验解决方案,并集成到客户的日常活动中。

对于开发人员和设计人员,Windows Presentation Foundation 提供了统一的 UI

平台,因此他们只需学习一个模式,就可以获得无限可能的 UI 体验。对于 .NET 开发人员,其框架是熟悉的,并且它最终将减少提供最佳用户体验和通信逻辑所需的代码行数。对于设计人员,Windows Presentation Foundation 提供的平台可消除内容、媒体和应用程序之间的边界。最重要的是,Windows Presentation Foundation 可以使开发人员和设计人员同步紧密地合作来快速提供不同的连通体验。

目前开发界的对WPF响应程度

目前已有很多人开始考虑或者已经转向WPF,一场新的学习热潮已经开始。但根据我最近的学习和了解,国内关于WPF的资料很少,除了msdn提供的资料以外,基本都是来自国外的资料,有些则是国外开发人员blog上的资料,当然都是英文的。因此如果现在能够引进一些WPF的书绝对是很好的时机。而且国外目前的几本WPF书也是刚刚上市,如果我们可以尽快引进的话,绝对可以帮助国内开发人员在最短时间内赶上国际步伐。

目前微软针对WPF提供的服务和支持

随着Vista RTM的发布,微软新一轮的技术推广已经开始。其实在此之前,WPF已经有很大的推广,因为CTP版本已经发布了有一段日子了。当然很多开发人员主要以技术研究为主,也有少数公司已经开始从事基于WPF的产品研发工作。

1. 目前WPF的正式版本已经发布(随.net framework 3.0正式版发布),你可以从msdn上免费下载

2. 相应的技术支持已经开始,但目前仅限于大客户,主要做售前技术支持,对于普通开发人员的技术支持可能要等到明年2月份才会开始(个人知道的情况,请以微软官方技术支持网站发布的信息为准)

3. WPF的VS2005插件目前还只有社区预览版(CTP版),也是从msdn上免费下载的,但正式版恐怕还要等一段时间,但使用CTP版本确实已经可以在VS2005中进行所见即所得的WPF开发。

4. WPF/E CTP版本已经发布,你可以在msdn上免费下载。同时发布的还有WPF/E

Sample Pack for CTP。

二、- 1 -

基于Silverlight 的网页动画开发的研究

彭庆喜,刘春燕,康卓,李林

武汉大学东湖分校计算机学院,湖北武汉(430212)

E-mail:pqingxi@

摘要: Silverlight 是微软近年推出的Web 前端技术,采用它进行网页开发成为程序员除

了FLASH 外新的选择。首先讨论了Silverlight 的特点和开发技术与XAML 语言。在此基础

上对基于Silverlight 技术进行网页动画开发进行了分析。重点探讨了基于Silverlight 对页面

元素进行二维和三维应用变换的方法。

关键词:Silverlight;XAML;动画;变换

中图分类号:TP393

1. 引 言

长期以来,在网页动画和网页游戏技术上占统治地位的是FLASH技术。然而微软在2007

年9 月发布Silverlight1.0,随后又分别发布了2.0,3.0 和4.0。并且还发布了用于开发Silverlight

应用的工具包Expression Studio。并且在其不断发展中,很多新的特性被加入。基于Silverlight

进行网页动画的开发成为一种新的选择。

本文对基于 Silverlight 进行网页动画开发进行了研究。

2. Silverlight 概述

WPF 是微软近年推出的展示层开发框架,Silverlight 的前身代号是“WPF/E”,也就是

其Everywhere 版本。微软从2007 年到2010 年发布了Silverlight 的4 个版本。它作为一个

浏览器插件,可以显示矢量图形、动画和视频。要运行Silverlight 就必须安装Microsoft 发

布的插件。

Silverlight 是一种跨浏览器、跨平台的技术。它能够在常见的Web 浏览器中运行,包括

IE、Firefox、Apple safari,并可以在Windows 和Apple Mac 平台上运行。

Silverlight 是类似于Flash 的解决方案。Silverlight 和Flash 的主要区别是:一个Silverlight

程序并不是传递给Flash 的播放器的一个编译好的二进制文件。相反,所有的代码都是基于

标准的,且图像使用了XAML。Silverlight 最值得关注之处在于,实际上就是它创建出的

UI 质量,它是真正以XAML 格式进行数据传输,到用户前端后再解析为具体图像,文本的

大小是非常小的,所以不会占用太多带宽。

Silverlight 在安全边界(沙盒)中运行,无法采用与传统的.NET 应用程序相同的方式访问

文件系统和其他的系统资源。默认情况下,限制对承载Silverlight 插件的HTML 页的访问。

3. Silverlight 技术框架

Silverlight 平台作为一个整体,由两个主要部分以及一个安装程序和更新组件组成。图

1 就是Silverlight 的技术框架图。

基金项目:武汉大学东湖分校教研项目

中国科技论文在线

- 2 -

图 1 Silverlight 的技术框架图

3.1 核心表示层框架

核心表示层框架是面向 UI 和用户交互的组件和服务(包括用户输入(Inputs)、用于

Web 应用程序的轻量型 UI 控件、媒体播放(Media)、数字版权管理(DRM)、数据绑

定以及表示层功能(UI Core),包括矢量图形、文本、动画和图像。此外还包括用于指定

布局的可扩展应用程序标记语言 (XAML)。

3.2 .NET Framework for Silverlight

.NET Framework for Silverlight 是包含组件和类库的.NET Framework 的子集,包括数据

集成、可扩展的Windows 控件、网络、基类库、公共语言运行时(CLR)。其中的部分组

件随着应用程序一起发布。这些Silverlight 类库没有包含在Silverlight 运行时中,而是包含

在SDK 中。如果在应用程序中用到了这些Silverlight 类库,这些类库就随着应用程序打包

下载到用户浏览器,这些类库包括UI 控件、XLINQ、Syndication(RSS/Atom)、XML 序

列化和动态语言运行时。

3.3 安装程序和更新程序

安装程序和更新程序是一个安装和更新控件,可以简化用户首次安装该应用程序的过

程,以后可以提供自动更新。

4. 创建动画

在 Silverlight 中可以很好的进行动画开发。从编程角度看,Silverlight 程序使用的是.NET

托管代码,可以用XAML 编写,XAML 是微软为Windows Vista 创建的基于XML 的标记

语言。它提供了对动画和3D 众多方面的支持。XAML 可以用最简单的文本编辑器编写,也

可以使用图形工具(如Expression Blend)来创建XAML 代码。

在 Silverlight 的动画设计中,用故事板管理时间线。另外动画类型分为两类:分别是线

性插值动画(Linear Interpolation)和关键帧动画(Key-frame Animation)。

中国科技论文在线

- 3 -

4.1 线性插值动画

在线性插值动画中只要设置动画开始值(From),动画终止值(To)和动画相对改变

值(By),就可以实现动画效果。其中From 是动画在时间线中的开始位置,To 是设置动

画在时间线上的结束位置,By 和To 类似,但比To 更灵活一些,设置By 不用关心具体属

性数值改变,也不用关心动画具体经历的时长。该动画类型,只是三种动画数据类型类,分

别是:DoubleAnimation、ColorAnimation 和PointAnimation。这三种类型类,分别用于Double

数据类型,Color 数据类型和Point 数据类型。

4.2 关键帧动画

关键帧动画相比线性插值动画要更加灵活和强大。在关键帧动画中,可以不用指定具体

的开始点和结束点,仅需设置关键帧和相关动画控制方法,Silverlight 将自动生成动画效果,

这个动画类型有两个重要概念,关键帧和动画控制方法。关键帧就是对象属性值,每设置一

个关键帧,也就是修改一次对象属性值。动画控制方法就是动画过渡效果。默认提供三种过

渡效果:线性(Linear)、离散(Discrete)和样条(Spline)。关键帧动画也有相应的数据

类型类, 分别是DoubleAnimationUsingKeyFrames 、ColorAnimationUsingKeyFrames ,

PointAnimationUsingKeyFrames 和ObjectAnimationUsingKeyFrames,其中前三种数据类型类

和线性插值中对应三种类的相同。ObjectAnimationUsingKeyFrames 是关键帧动画特有的数

据类型类,可以替代任何数据类型。

4.2 故事板

故事板(StoryBoard)是管理时间线的类,可以使用该类管理和控制多个动画进程。如

控制动画的播放、暂停、停止或者改变动画位置等功能,不仅如此,通过Storyboard 还可以

为动画指定控件和属性。

线性插值动画、关键帧动画和故事板是Silverlight 中支持动画的主要的类,它们都继承

ne,以下图2 是Silverlight 关于动画的简单类图。

图 2 Silverlight 关于动画的简单类图

中国科技论文在线

- 4 -

5. 应用变换

5.1 二维变换

Silverlight 包含了二维变换元素,可以改变元素的尺寸和位置。还可以通过变换改变元

素,如旋转或使它们倾斜。

在图形字段中,转换可以定义为如何将一个坐标空间映射到另一个空间中。通常使用转

换矩阵来描述转换,支持从一个系统向另一个系统进行简单的数学转换。Silverlight XAML

将这个矩阵抽象化,并支持旋转、缩放、倾斜和平移四种转换。Silverlight XAML 还包含另

外一种特殊的转换,可以定义和实现自己的矩阵,然后使用这个矩阵来合并其他转换。

RotateTransform:使元素进行旋转,绕指定的中心点将元素旋转一个指定的角度。

ScaleTransform:基于水平轴、垂直轴,或同时基于这两个轴更改元素大小。

SkewTransform:使一个元素按照某一个轴或原点倾斜。

TranslateTransform:将元素在平面上平移。

MatrixTransform:这是一种低级机制,能创建自定义的2D 变换。

5.2 准三维变换

WPF 支持三维变换,而Silverlight 不支持真正的3D。在Silverlight 3 中增加了新的特性

透视变换PerspectiveTransform,可以让用户模拟在三维空间中的旋转。这并不是真正的3D

我们把它称为准三维变换。透视变换能够使人感到对象朝向或者远离观察者进行旋转。

Matrix3DProjection 和Matrix3D 类型用于更复杂的准3D 方案,其中前者是后者的子类。要

使用这些类,需要编写代码,以便正确地创建3D 变换矩阵。另外还可以使用PlaneProject

进行变换。

6. 总结

几年来,Silverlight 发布了第1 版到第4 版。其对动画的支持越来越强大,并且开始支

持脱离浏览器的动画应用。考虑到Silverlight 采用C#等技术方面的优势,很多开发人员都

被吸引到Silverlight 的动画开发中来。随着网页游戏的流行,相信Silverlight 在网页动画开

发方面能够得到更为广泛的应用。

参考文献

[1] Gaston .3D Game Development with Microsoft Silverlight 3 Beginner’s

Guide[M].UK: Packt

Publishing, Sep. 2009

[2] Adam Nathan 著,瞿杰译,Silverlight 揭秘[M],北京:人民邮电出版社,2008.11

[3] Silverlight 官网:[EB/OL]

[4] 李爱民,刘晶,马维纲.Silverlight 相关技术研究[J],计算机技术与发展,2009.6,第19 卷:117-120.

[5] 孙超,钟珞.基于 Silverlight 的富界面应用研究[J],武汉理工大学学报,2008.12,第30 卷:95-97

Research on Web Animation Development Based on

Silverlight

Peng Qingxi,Liu Chunyan,Kang zhuo, Li lin

School of Computer, Donghu College of Wuhan University, Wuhan 430212 China

Abstract

中国科技论文在线

- 5 -

Silverlight is the Web front-end technology launched by Microsoft. Using it to develop Web

application becomes a new choice besides FLASH for the programmer. In this paper, the features

and

development techniques of Silverlight and the XAML language have been discussed. Then

animation

development based on Silverlight has been analyzed. The paper focuses on the methods of

two-dimensional and three-dimensional transformation based on Silverlight technology.

Keywords: Silverlight; XAML; animation; transform

中国科技论文在线

基于Silverlight的网页动画开发的研究

时间: 2010-12-08 来源: 论文在线

摘要:Silverlight是微软近年推出的Web前端技术,采用它进行网页开发成为程序员除了FLASH外新的选择。首先讨论了Silverlight的特点和开发技术与XAML语言。在此基础上对基于Silverlight技术进行网页动画开发进行了分析。重点探讨了基于Silverlight对页面元素进行二维和三维应用变换的方法。

关键词:Silverlight;XAML;动画;变换

一、引言

长期以来,在网页动画和网页游戏技术上占统治地位的是FLASH技术。然而微软在2007年9月发布Silverlight1.0,随后又分别发布了2.0,3.0和4.0。并且还发布了用于开发Silverlight应用的工具包Expression Studio。并且在其不断发展中,很多

新的特性被加入。基于Silverlight进行网页动画的开发成为一种新的选择。

本文对基于Silverlight进行网页动画开发进行了研究。

二、Silverlight概述

WPF是微软近年推出的展示层开发框架,Silverlight的前身代号是“WPF/E”,也就是其Everywhere版本。微软从2007年到2010年发布了Silverlight的4个版本。它作为一个浏览器插件,可以显示矢量图形、动画和视频。要运行Silverlight就必须安装Microsoft发布的插件。

Silverlight是一种跨浏览器、跨平台的技术。它能够在常见的Web浏览器中运行,包括IE、Firefox、Apple safari,并可以在Windows和Apple Mac平台上运行。

Silverlight是类似于Flash的解决方案。Silverlight和Flash的主要区别是:一个Silverlight程序并不是传递给Flash的播放器的一个编译好的二进制文件。相反,所有的代码都是基于标准的,且图像使用了XAML。Silverlight最值得关注之处在于,实际上就是它创建出的UI质量,它是真正以XAML格式进行数据传输,到用户前端后再解析为具体图像,文本的大小是非常小的,所以不会占用太多带宽。

Silverlight在安全边界(沙盒)中运行,无法采用与传统的.NET应用程序相同的方式访问文件系统和其他的系统资源。默认情况下,限制对承载Silverlight插件的HTML页的访问。

三、Silverlight技术框架

Silverlight平台作为一个整体,由两个主要部分以及一个安装程序和更新组件组成。图1就是Silverlight的技术框架图。

3.1 核心表示层框架

核心表示层框架是面向UI和用户交互的组件和服务(包括用户输入(Inputs)、用于Web应用程序的轻量型UI控件、媒体播放(Media)、数字版权管理(DRM)、数据绑定以及表示层功能(UI Core),包括矢量图形、文本、动画和图像。此外还包括用于指定布局的可扩展应用程序标记语言(XAML)。

3.2 NET Framework for Silverlight

.NET Framework for Silverlight是包含组件和类库的.NET Framework的子集,包括数据集成、可扩展的Windows控件、网络、基类库、公共语言运行时(CLR)。其中的部分组件随着应用程序一起发布。这些Silverlight类库没有包含在Silverlight运行时中,而是包含在SDK中。如果在应用程序中用到了这些Silverlight类库,这些类库就随着应用程序打包下载到用户浏览器,这些类库包括UI控件、XLINQ、Syndication(RSS/Atom)、XML序列化和动态语言运行时。

3.3 安装程序和更新程序

安装程序和更新程序是一个安装和更新控件,可以简化用户首次安装该应用程序的过程,以后可以提供自动更新。

四、创建动画

在Silverlight中可以很好的进行动画开发。从编程角度看,Silverlight程序使用的是.NET托管代码,可以用XAML编写,XAML是微软为Windows Vista创建的基于XML的标记语言。它提供了对动画和3D众多方面的支持。XAML可以用最简单的文本编辑器编写,也可以使用图形工具(如Expression Blend)来创建XAML代码。

在Silverlight的动画设计中,用故事板管理时间线。另外动画类型分为两类:分别是线性插值动画(Linear Interpolation)和关键帧动画(Key-frame Animation)。

4.1 线性插值动画在线性插值动画中只要设置动画开始值(From),动画终止值(To)和动画相对改变值(By),就可以实现动画效果。其中From是动画在时间线

中的开始位置,To是设置动画在时间线上的结束位置,By和To类似,但比To更灵活一些,设置By不用关心具体属性数值改变,也不用关心动画具体经历的时长。该动画类型,只是三种动画数据类型类,分别是:DoubleAnimation、ColorAnimation和PointAnimation。这三种类型类,分别用于Double数据类型,Color数据类型和Point数据类型。

4.2 关键帧动画

关键帧动画相比线性插值动画要更加灵活和强大。在关键帧动画中,可以不用指定具体的开始点和结束点,仅需设置关键帧和相关动画控制方法,Silverlight将自动生成动画效果,这个动画类型有两个重要概念,关键帧和动画控制方法。关键帧就是对象属性值,每设置一个关键帧,也就是修改一次对象属性值。动画控制方法就是动画过渡效果。默认提供三种过渡效果:线性(Linear)、离散(Discrete)和样条(Spline)。关键帧动画也有相应的数据类型类,分别是DoubleAnimationUsingKeyFrames、ColorAnimationUsingKeyFrames,PointAnimationUsingKeyFrames和ObjectAnimationUsingKeyFrames,其中前三种数据类型类和线性插值中对应三种类的相同。ObjectAnimationUsingKeyFrames是关键帧动画特有的数据类型类,可以替代任何数据类型。

4.3 故事板

故事板(StoryBoard)是管理时间线的类,可以使用该类管理和控制多个动画进程。如控制动画的播放、暂停、停止或者改变动画位置等功能,不仅如此,通过Storyboard还可以为动画指定控件和属性。

线性插值动画、关键帧动画和故事板是Silverlight中支持动画的主要的类,它们都继承ne,以下图2是Silverlight关于动画的简单类图。

图2 Silverlight关于动画的简单类图

五、应用变换

5.1 二维变换

Silverlight包含了二维变换元素,可以改变元素的尺寸和位置。还可以通过变换改变元素,如旋转或使它们倾斜。

在图形字段中,转换可以定义为如何将一个坐标空间映射到另一个空间中。通常使用转换矩阵来描述转换,支持从一个系统向另一个系统进行简单的数学转换。Silverlight XAML将这个矩阵抽象化,并支持旋转、缩放、倾斜和平移四种转换。Silverlight XAML还包含另外一种特殊的转换,可以定义和实现自己的矩阵,然后使

用这个矩阵来合并其他转换。RotateTransform:使元素进行旋转,绕指定的中心点将元素旋转一个指定的角度。ScaleTransform:基于水平轴、垂直轴,或同时基于这两个轴更改元素大小。SkewTransform:使一个元素按照某一个轴或原点倾斜。

TranslateTransform:将元素在平面上平移。MatrixTransform:这是一种低级机制,能创建自定义的2D变换。

5.2 准三维变换

WPF支持三维变换,而Silverlight不支持真正的3D。在Silverlight 3中增加了新的特性透视变换PerspectiveTransform,可以让用户模拟在三维空间中的旋转。这并不是真正的3D我们把它称为准三维变换。透视变换能够使人感到对象朝向或者远离观察者进行旋转。Matrix3DProjection和Matrix3D类型用于更复杂的准3D方案,其中前者是后者的子类。要使用这些类,需要编写代码,以便正确地创建3D变换矩阵。另外还可以使用PlaneProject进行变换。

六、总结

几年来,Silverlight发布了第1版到第4版。其对动画的支持越来越强大,并且开始支持脱离浏览器的动画应用。考虑到Silverlight采用C#等技术方面的优势,很多开发人员都被吸引到Silverlight的动画开发中来。随着网页游戏的流行,相信Silverlight在网页动画开发方面能够得到更为广泛的应用。

参考文献

[1]Gaston .3D Game Development with Microsoft Silverlight 3 Beginner’s

Guide[M].UK:PacktPublishing,Sep.2009

[2]Adam Nathan著,瞿杰译,Silverlight揭秘[M],北京:人民邮电出版社,2008.11

[3]Silverlight官网:[EB/OL]

[4]李爱民,刘晶,马维纲.Silverlight相关技术研究[J],计算机技术与发展,2009.6,第19卷:117-120.

[5]孙超,钟珞.基于Silverlight的富界面应用研究[J],武汉理工大学学报,2008.12,第30卷:95-97