下面这些是从别人的blog中转过来的,
(原文地址:http://baishi9411.spaces.live.com/blog/cns!9198d7311eda82b4!111.entry)
What is WPF
最近和一些同学一起吃饭, 大家问我在做什么东西。我说在做WPF(Avalon)上的control , 结果没人听说过WPF:-(。问我什么是WPF, 这可真把我难住了,我一般的回答“WPF有点象WinForm的下一代产品”,不过这显然和WPF实际的定义差别很大。虽然做了这么长时间,还真没法给一个很清楚明白的解释。今天在网上查了一下,我想下边这个应该算是对WPF/Avalon一个比较准确的定义吧。
The Microsoft Windows Presentation Foundation (formerly code named "Avalon") provides the foundation for building applications and high fidelity experiences in Vista, blending together application UI, documents, and media content, while exploiting the full power of your computer. The functionality extends to the support for Tablet and other forms of input, a more modern imaging and printing pipeline, accessibility and UI automation infrastructure, data driven UI and visualization, as well as the integration points for weaving the application experience into the Windows shell.
WinFX是下一代的Windows API,而WPF将是WinFX的核心一部分,用于处理UI, Document, Media和用户交互。
微软关于WPF的网站:http://msdn.microsoft.com/windowsvista/building/presentation/
最新2月份的用户预览版可以从这里下载: http://msdn.microsoft.com/windowsvista/getthebeta/default.aspx
在msdn上有两个WPF讨论组:
1) http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=119
另外还有几个关于WPF的Blog:
http://blogs.msdn.com/tims/ TimSneath的Blog
http://blogs.msdn.com/atc_avalon_team/default.aspx 这是微软工程院Avalon组的Blog
http://blogs.msdn.com/okoboji/ Kevin Moore (WPF PM)的blog
http://blogs.msdn.com/tims/articles/475132.aspx Tim Sneath给了一个WPF相关Blogger的列表
http://microsoft.sitestream.com/PDC05/ PDC05的一些Talk和Demo
----------------
Avalon简介
Avalon是什么?它其实是WinFX的表示子系统,而WinFX则是.NET 2.0 Framework的延伸。Avalon(阿瓦隆)是凯尔特人传说中的西方乐土岛,据说亚瑟王及其部下死后尸体被移往该岛。本文的题目"阿瓦隆之迷"实际上借用了马里恩·齐默·布拉德利(Marion Zimmer Bradley)的一本小说的名字。Avalon还是纽芬兰群岛的一个半岛。最近微软爱用美洲北太平洋地区的地理名称作为产品代号。而Longhorn是北美洲范库弗峰Whistler-Blackcomb 滑雪胜地的一酒吧的名字。Whistler和Blackcomb则分别是XP和Longhorn Server的代号。
WinFX的三大支柱
WinFX的三大支柱分别是Avalon(图形子系统)、WinFS(存储子系统)和Indigo(通信子系统)。
Avalon与GDI 的区别在于,前者使用描述性模型来描述各种图形实体:窗口、网页、布局面板、向量图形、可重用控件、动画、3D对象和景物等,而后者采用过程化的方式。
对象树
Avalon应用程序的图形输出与GDI不同,不是按照过程化指令顺序执行的,而是用不同层次的对象及其属性提供的。Avalon中所有图形场景都是由Avalon的类模型中不同层次的对象--即对象树--构成的。
对象树的一个简单实例如下:
Avalon的核心是基于图形向量处理的渲染引擎,它负责解释对象树并渲染场景,它能充分发挥显卡的性能(自由缩放、3D阴影、α混合技术、镜面反射、动画、视频等)。不过我们一步步来,先看看上面的对象树的输出结果:
Avalon的类模型除了有几何图形,还有各种控件,如edit box、label、button、combo box、check box和list control。不过这些控件都被定义为向量图形,所以随意缩放时不会出现锯齿。
本质上说,用GUI元素创建对象树,就可以开发出Avalon应用程序的UI(用户界面)。这时,对象树常被称为UI树。
一个简单的UI树例子:
用Avalon渲染引擎渲染之后,输出结果如下:
由于所有UI元素都是基于向量的,面板可以随意缩放,控件尺寸也会随之缩放。我们还可以很方便的修改字体属性、边框颜色等属性。
即便数据绑定也可以用描述性方式进行:您可以将控件与SQL数据库或RSS feed等数据源联系起来,当显示控件时,会自动的从数据源获得内容,无需编写任何过程式代码。
不过创建UI树只是开发图形界面的一种方式,此外还可以用XAML。