[前言]:本文将先介绍 "Vista"的表示子系统Avalon在图形处理方面的优势,然后带您开始Avalon编程之旅。
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。