破译阿瓦隆之谜系列文章之一
作者:Guido Stercken Sorrenti 赛迪网
本文将先介绍 "Longhorn"的表示层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元素都是基于向量的,面板可以随意缩放,控件尺寸也会随之缩放。我们还可以很方便的修改字体属性、边框颜色等属性。
即便数据绑定也可以用描述性方式进行:您可以将控件与SQL数据库或RSS feed等数据源联系起来,当显示控件时,会自动的从数据源获得内容,无需编写任何过程式代码。
不过创建UI树只是开发图形界面的一种方式,此外还可以用XAML。
XAML
XAML(发音为"zammel")是一种基于XML的标记语言,它也可以创建Avalon对象树。XAML是eXtensible Application Markup Language的简称,(XAML中的"A"不是代表"Avalon,而是"应用程序"。这是由于XAML将来不仅用于描述Avalon场景,还可以用于.NET的对象层次结构)。
下面是上述UI树例子的XAML代码:
XAML标签与UI树中的对象相对应,属性描述对象的性质,标签数据则代表了可视元素的文本内容。例如,下面的Label标签与Label对象相对应,它的VerticalAlignment属性设置为"Top",用户看到的文本内容是"Select Country:":
面板
面板本身没有文本内容,它们是其他元素的矩形容器。总共有七种面板,每种的布局都不同:BulletPanel、Canvas、DockPanel、Grid、StackPanel、TabPanel和ToolBarOverflowPanel。面板可以层层嵌套。
资源与本地化
资源这一概念是苹果在开发Macintosh的前身Lisa时最先提出的,目的是简化应用程序的本地化工作。文本翻译只是本地化的一半工作,因为同一文本在不同语言中长度不同。
英语里的"Open File"变成法语"Ouvrir fichier",从9个字符变成14个,增加了55%!Win32应用程序中一部分描述性代码易于本地化,但是采用过程化编写的代码则很难本地化。
但是Avalon应用程序的所有的UI都可以用描述性方式设计,这就带来以下好处:
·本地化翻译:XAML中所有可视文本都被定义为标签内容,这样本地化工具就很容易提取和替代这些文本。此外,当文本长度发生变化时,由于布局会自动缩放,使得无需人工调整布局。
·无障碍设计:由于UI的所有文本元素都采用描述性、层次性形式,这样残疾人也能容易的获取文本信息。WinFX最近新增了语音识别.NET类,这样只需在代码隐藏文件中加入几行代码,就可以实现语音识别及合成功能,用户就能通过语音向文本框内输入信息。
·工具:Avalon采用描述性模型,便于开发生成描述性数据的工具。这样就可以用可视编辑器开发大部分UI。
·设计:开发人员无需学习XAML,就可以利用适当的工具创建应用程序的UI。
综上所述, XAML的强大功能基于两种抽象:第一种是业务逻辑抽象(通常用过程化语言编写于代码隐藏文件,把业务逻辑与表示隔离),第二种是文本内容抽象(把设计与文本隔离,使本地化与数据绑定更为容易)。
.NET应用程序中的XAML
XAML代码不仅可以描述静态场景(如HTML、Postscript),也可以描述动态效果,如动画甚至事件处理代码。在XAML中创建UI与用HTML开发网页很类似。但是XAML的性能要强大的多,它增加了高级2D和3D向量图形、动画、数据绑定、事件处理以及语音识别与合成。
本文将先介绍 "Longhorn"的表示层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元素都是基于向量的,面板可以随意缩放,控件尺寸也会随之缩放。我们还可以很方便的修改字体属性、边框颜色等属性。
即便数据绑定也可以用描述性方式进行:您可以将控件与SQL数据库或RSS feed等数据源联系起来,当显示控件时,会自动的从数据源获得内容,无需编写任何过程式代码。
不过创建UI树只是开发图形界面的一种方式,此外还可以用XAML。
XAML
XAML(发音为"zammel")是一种基于XML的标记语言,它也可以创建Avalon对象树。XAML是eXtensible Application Markup Language的简称,(XAML中的"A"不是代表"Avalon,而是"应用程序"。这是由于XAML将来不仅用于描述Avalon场景,还可以用于.NET的对象层次结构)。
下面是上述UI树例子的XAML代码:
|
XAML标签与UI树中的对象相对应,属性描述对象的性质,标签数据则代表了可视元素的文本内容。例如,下面的Label标签与Label对象相对应,它的VerticalAlignment属性设置为"Top",用户看到的文本内容是"Select Country:":
|
面板
面板本身没有文本内容,它们是其他元素的矩形容器。总共有七种面板,每种的布局都不同:BulletPanel、Canvas、DockPanel、Grid、StackPanel、TabPanel和ToolBarOverflowPanel。面板可以层层嵌套。
资源与本地化
资源这一概念是苹果在开发Macintosh的前身Lisa时最先提出的,目的是简化应用程序的本地化工作。文本翻译只是本地化的一半工作,因为同一文本在不同语言中长度不同。
英语里的"Open File"变成法语"Ouvrir fichier",从9个字符变成14个,增加了55%!Win32应用程序中一部分描述性代码易于本地化,但是采用过程化编写的代码则很难本地化。
但是Avalon应用程序的所有的UI都可以用描述性方式设计,这就带来以下好处:
·本地化翻译:XAML中所有可视文本都被定义为标签内容,这样本地化工具就很容易提取和替代这些文本。此外,当文本长度发生变化时,由于布局会自动缩放,使得无需人工调整布局。
·无障碍设计:由于UI的所有文本元素都采用描述性、层次性形式,这样残疾人也能容易的获取文本信息。WinFX最近新增了语音识别.NET类,这样只需在代码隐藏文件中加入几行代码,就可以实现语音识别及合成功能,用户就能通过语音向文本框内输入信息。
·工具:Avalon采用描述性模型,便于开发生成描述性数据的工具。这样就可以用可视编辑器开发大部分UI。
·设计:开发人员无需学习XAML,就可以利用适当的工具创建应用程序的UI。
综上所述, XAML的强大功能基于两种抽象:第一种是业务逻辑抽象(通常用过程化语言编写于代码隐藏文件,把业务逻辑与表示隔离),第二种是文本内容抽象(把设计与文本隔离,使本地化与数据绑定更为容易)。
.NET应用程序中的XAML
XAML代码不仅可以描述静态场景(如HTML、Postscript),也可以描述动态效果,如动画甚至事件处理代码。在XAML中创建UI与用HTML开发网页很类似。但是XAML的性能要强大的多,它增加了高级2D和3D向量图形、动画、数据绑定、事件处理以及语音识别与合成。
posted on 2005-07-28 09:04 chance_win 阅读(325) 评论(0) 收藏 举报
浙公网安备 33010602011771号