WPF简介

1.WPF是什么

WPF是Windows Presentation Foundation 的缩写,其原来代号为“Avalon”,因“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。WPF是微软新一代图形系统,运行 在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于 WPF。

程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持flow text support,3D视觉效果和强大无比的控件模型框架。

业内著名人士惊呼:“这一天终于来了!”

WPF与XAML

20世纪90年代中期,基于SGML,衍生出的XML的应用已变得极为流行。许多开发者把XML视为解决所有计算机开发问题的灵丹妙药,XML几乎无处不在。

针对Vista操作系统,微软提供了专门的界面开发语言XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)。XAML作为微软Vista操作系统的界面描述语言,它可对WPF程序的所有界面元素进行定制,从而构建炫 丽夺目的软件界面。

XAML作为界面描述语言(注意是“语言”),它最终会被编译成.Net后台代码。因此,它能够同后台进行逻辑处理的.NET语言如C#、J#、C++、 VB等协同工作,其工作性质类似于ASP.NET中的HTML。XAML的产生,使得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于团队开 发。

同HTML一样,XAML既可以直接编码,也可以由专门的工具生成。目前最好的XAML编辑器是Expression Blend,但你也可以使用Windows SDK for Windows Vista中的XAMLPad,但功能却显得太简单。

2.WPF何以令人佩服

一直以来,完美的用户体验是桌面应用程序和Web应用程序中的一大障碍。许多开发人员绞尽脑汁将界面设计得美观炫丽些、互动感强些,但费了九牛二虎之力, 还是差强人意。由于技术上的限制,Web 应用程序无法提供与桌面应用程序同样丰富的用户体验。而随着电脑与每个人的生活、工作变得密不可分,人们对桌面应用程序的要求也不断提高。永不满足的人们 要求桌面应用程序能够播放视频、运行动画、采用二维或三维图形,以及调用不同的文档。

想实现这些吗?那就用WPF!来句流行的广告词:用了都说好!

使用 WPF,你可以创建丰富、美妙的连接应用程序,以充分利用 Windows 平台,其中包括 UI、媒体、脱机通信和文档支持。

先来说说WPF程序的设计制作过程。

一般地,大多数WPF程序都将同时包含XAML代码和程序代码。我们首先使用XAML定义程序界面(如前所述,可以手工编写,也可以采用 Experssion Blend等可视化工具编写),然后再用.NET语言(C#, VB.Net等)编写相应的逻辑代码。和ASP.NET类似,逻辑代码既可以直接嵌入XAML文件中,也可保存为独立的代码文件。

尽管XAML并非设计WPF程序所必须,我们依然可以按照传统方式使用程序代码来实现界面设计制作。但是,如果使用XAML,界面设计和逻辑设计就可以完 全分离。这样,不但使程序的开发和维护更加方便,而且当进行团队开发时,可真正实现“专业的人做专业的事”,把界面设计交给专业的美术设计师们去完成,而 让我们精力和时间都宝贵的程序员们专心致志于业务逻辑的实现。真正做到“各尽其能,各施其职”,最终得到一个功能强大、界面一流的WPF程序。这时,就只 等用户“满意一笑,开心买单”了。

听说现在的人都讲求实在,讲求效益。那么,WPF给我们的桌面应用程序和Web应用程序带来了哪些实实在在好处呢?

首先,一套编码,桌面应用程序与Web应用程序均可运用,这当然就节省成本啦。当然,某些时间,改改适当代码是必需的。但改动量如此之小,让你很惊异伟大的Microsoft,让你不得不服(WPF的“我佩服”传说就此而来?)。

其次,WPF不仅使美化、多样化了桌面应用程序,也是使Web变得异彩纷呈。WPF使得3D进 入Web成为可能。比如,你可以使用矢量图形设计软件(Illustrator, CorelDraw等, 微软也有了!叫“Expression Designer”)设计好图片,然后将图形输出或导出成为XAML格式。然后,你可以在Blend中打开XAML文件,制作成动画,最后生成的也是 XAML。通过.Net语言(如C#)进行编程,还可以控制这些XAML。加上有VS2005/2008优秀的开发环境,可谓之“牛B无敌”。XAML+ C#是大趋势,必将吸引大批追捧者(从微软.Net的成功,已从一个侧面印证了这一点)。

更多的技术细节。

实际上,WPF 的支持范围远不止基本用户界面应用那么简单,还包括:

(1)文档的变革。之所以称其为“变革”,是因为它不仅可以使用传统的屏幕显示/打印文档(XPS),而且还可以使用 FlowDocument 标记来显示流文档。文档中不仅可以有文字、图片、链接,还可以有三维动画、视频等。试想一下,在某个重要的日子,当你将所有与他/她在一起时浪漫的照片、 温馨的视频、甜蜜的话语,加上潇洒的签名,发挥你丰富的想象力,做成一个动感十足的动画,或是丰富趣味的互动游戏,将之保存为一份多媒体文档,在恰当的时 间,利用恰当的机会,把它送给他/她的时候,他/她看到之后又是怎样一种感觉呢?在恰当的时间、恰当的地点,由恰当的人,做出恰当的事,这就是最“恰当不 过”的了!

(2)图形:WPF 支持创建二维和三维矢量图形。对于二维图形,WPF 提供标准抽象,例如,形状、画笔和绘图笔,同时还允许三维图形定义模型,以用于指定光线和摄像机位置信息。与早期技术(GDI, GDI+)不同的是,WPF 图形并不是使用开发人员所必须了解的单独一组概念进行图形图像绘制,用于图形描述的XAML元素能够与那些用户界面其他元素自然组合。比如按钮,可以是文 字,也可是带图形和文字的组合,还可以有更多功能。

(3)图像:WPF使用 XAML 的图像标记,可在应用程序中显示不同格式的图形,包括 JPEG,GIF,PNG及其他格式。WPF依靠WIC(Windows Imaging Component) 为编解码器,以及显示和存储图像的软件提供标准框架。在 WPF 中,通常图像元素可以与其他元素组合,比如按钮,可以显示为图像按钮而不是简单的文本标签。

(4)多媒体视频及音频:WPF可使用MediaElement 标记来显示不同格式的视频和音频,包括 WMV、AVI 和 MPEG等。同样,此元素也可与其他 XAML 元素相组合,更让人称奇的是,你甚至可以使三维立方体的所有侧面上都显示视频。继续发挥你的想像力,你可以让它们动起来,比如3D旋转,拖动或缩放某一侧 面,或是做出你要的效果。在这个世界里,你可以真正做到“人有多大胆,地有多大产”。

(5)动画:WPF 提供动态显示绝大部分用户界面的内置支持。例如,放大和缩小矩形、更改按钮大小。与Adobe Flash中时间线类似,你还可以定义包含时间线的情节提要,也可以调整动画的发生顺序。

(6)数据绑定:基于多数程序都需要显示数据,因此,WPF提供将数据映射到用户界面元素的自动支持功能。类似asp.net的方式, WPF 可为包含在对象和其他源中的信息提供数据绑定,而且还允许在显示数据前对其进行排序和筛选。

最后,可让原有图形图像的重复利用,使你原有的投资发挥最大的效益。

由于XAML基于XML,它的格式是开放的。因此市面上出现了大量有用的转换工具,利用这些工具,可以将你原来在其他设计软件(如Photoshop、 Illustrator、AffectEffects,其他三维设计软件等)制作出来的图形图像、3D动画等导出为XAML。

3.针尖对麦芒——WPF给Adobe带来的挑战

不是冤家不聚头。看来,这次微软与Adobe,是有一场或明或暗的较量了。

微软大举拥军进入UI领域,欲与Adobe一决雌雄?这有可能。微软的野心,谁也看不透。是不是世界本来很多路,走的人多了,就没路可走了呢?总之,这种短兵相接的竞争,对广大用户而言,总是利好。

这个我们先不管,让我们来看看微软的Expression系列产品,然后再看看对WPF的影响因素。

时间: 2024-09-20 01:04:38

WPF简介的相关文章

艾伟:WPF简介

WPF简介 WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现). 作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能.其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你刚到神奇.顺便提一下,Aero是专门为3D桌面开发的引擎,可以让桌面实现神奇的3D翻转,这绝对是操作系统有史以来的一次神奇尝

WPF微软的UI革命

上次我写了一篇<WPF简介>,当时我仅仅是对WPF有初步认识,但通过近期的学习之后,我开始逐步领会WPF的真正意义,它不仅仅是一项技术而已,它给我们带来的将是一场UI革命. 回顾过去 在过去几十年里,Windows的用户界面在不断的改进,特别是Windows XP的推出,给人眼前一亮的感觉.在过去的日子里,有许多程序员和公司为了实现类似于.甚至优于Windows XP的用户界面,大量制作了基于Windows Forms的自定义控件,通过重写OnPaint来对控件做彻头彻尾的美容.随着Web 2

WPF的度量系统简介

和Winform不同,WPF的度量單位不是像素,而是設備無關單位DIU,其大小總是1/96吋 那麽,WPF中一個寬度爲96的按鈕,到底是多少個像素呢? 答:取決於系統DPI. 計算公式爲:實際像素 = 設備無關尺寸*系統DPI 這樣,在系統DPI爲96時(windows默認值),按鈕正好占用96像素:而系統DPI爲120時,將占用120個像素 像素尺寸有了,再已知屏幕DPI,就可以推算出物理尺寸了. 而屏幕DPI取決於屏幕尺寸和分辨率. 比如:12.5吋筆記本,1366*768的屏幕DPI約12

WPF 自定义快捷键命令(Command)

命令简介 WPF 中的命令是通过实现 ICommand 接口创建的.ICommand 公开两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged).Execute 执行与命令关联的操作.CanExecute 确定是否可以在当前命令目标上执行命令.如果集中管理命令操作的命令管理器检测到命令源中发生了更改,此更改可能使得已引发但尚未由命令绑定执行的命令无效,则将引发 CanExecuteChanged.ICommand 的 WPF 实现是 RoutedCo

WCF简介

一.简介 WCF是Windows Communication Foundation缩写,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分.使用该框架,开发人员可以构建跨平台.安全.可靠和支持事务处理的企业级互联应用解决方案. 根据微软官方的解释,WCF(之前的版本名为"Indigo")是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的安全.可信赖.

领先技术-在 WPF 和 Silverlight 2 中反复使用代码

本专栏基于 Silverlight 2 的预发布版本.文中的所有信息均有可能发生变更. 目录 WPF 与 Silverlight 2 的兼容性 视觉状态管理器简介 共享代码 有关 WPF 应用程序的推论 编写跨平台的 WPF 代码 分析托管代码 获取用于关键代码的策略 示例分析 最终注意事项 在 Silverlight 2 中,您可以使用可扩展应用程序标记语言 (XAML) 来设计和渲染用户界面.与此同时,您可以利用内置的核心 CLR 处理浏览器内的托管代码.这样基于 Web 的 Silverl

WPF自定义快捷键命令(Command)

命令简介 WPF 中的命令是通过实现 ICommand 接口创建的.ICommand 公开两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged). Execute 执行与命令关联的操作.CanExecute 确定是否可以在当前命令目标上执行命令.如果集中管理命令操作的命令管理器检测到命令源中发生了更改,此更改可能使得已引发但尚未由命令绑定执行的命令无效,则将引发 CanExecuteChanged.ICommand 的 WPF 实现是 RoutedC

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于

WPF界面设计技巧(11)-认知流文档 &amp; 小议WPF的野心

原文:WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心     流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具备了HTML的绝大多数优势,并提供了更强的编程支持及对WPF其他元素的兼容.   直接来看代码吧,需要讲解的地方比较多,我就直接注释在代码里了,看起来更方便些:     Code<Window x:Class="流文档.Window1"     xmlns="http://schemas.microso