-
深入浅出 WPF教程之 WPF精神:宣告式程序设计
WPF精神:宣告式程序设计
就使用者接口而言,WPF既然是为了使设计师可以采用相同逻辑设计Windows-based与Web-based应用程序,但以往程序常区分为操作接口 (或称为Markup)以及逻辑(Code),并分属画面设计人员与程序设计师两种不同角色负责处理。此外,设计师还必须为程序接口撰写大量的程序代码, 藉以控制窗口上的对象。WPF不仅为画面简洁易懂,更延用一贯的宣告式程序设计,让设计师只要设定参数即可完成对象控制。曹祖圣风趣地说到:「我怀疑程序 设计师是否还有存在的必要?」。
从微软为WPF所提的架构堆栈上可知,WPF底层以Windows Vista操作系统为主,接下来是Windows Vista Display Driver Model,并采用DirectX绘图引擎,特别是Composite Engine,负责2D与3D绘图处理,包括材质、光源等,除了达到宣告式程序设计的目标外,其余3个目标在于整合操作系统、采用向量式的使用者接口 (UI)组合引擎、统一使用者接口、文件与媒体的程序设计方式、部署更简单等。
外号「Flash Killer」的接口设计工具:EID
另一个与使用者接口设计相关则是WPF技术中,用于实作接口设计工具:EID。虽然议程中曹祖圣简短地展示此工具,在简报文件中,表明EID可以产生 XAML程序代码,同时也是Visual Studio 2005原生支持的使用者接口格式,使得接口设计师可与程序设计师沟通,但他语出惊人地说到,此工具外号「Flash Killer」。
此工具是否真如其名,尚未有定论,但在现场展示过程中,我们可发现此工具与早期的Flash开发工具极相似,连时间轴(Timeline)的位置也相同,当图形依时间轴产生动态效果时,简直与Flash如出一辙。
2D绘图利器:笔刷功能
虽然WPF在多样化媒体处理上,无论是2D或3D绘图,以及影片处理等,仍急起直追着Flash技术,但至少在2D绘图上已经为设计师提供许多更便利的新功能,例如Visual Brush等笔刷(Brush)。
简单地说,设计师可以将屏幕上某个画面当成笔刷,刷到另一个平面,或当成材质贴到另一个3D平面上。对纯粹绘图工具而言,笔刷是很基本的功能,但在窗口设 计上,能不必经由复杂的程序设计产生这样的特效,实属2D绘图上的利器。议程中,讲师打趣地说着,这并非他的专长,「通常外包给画面设计人员,还是写程序 比较好赚。」学员或许可以听出WPF在2D绘图上将更为便利。
备受瞩目的XPS文件技术
WPF另一个引人注目的革命便是文件技术。微软在下一代文件格式,都将透过Packing技术封装成ZIP档,但使用者可采用其它扩展名。学员从这场议程 中将了解到,微软对XPS文件技术有着更大的野心,例如:除了直接存取XPS(XML Paper Specification,XML文件规格书)或Office 2007文件,企业用户将可以建立自订的档案格式,甚至开发文件管理解决方案。
虽然Office在办公室应用软件上的市场占有率高达90%以上,使得某些应用环境中甚至采用DOC档作为文件格式的交换标准,例如政府公文,差别只是文 件内容而已。新一代的XPS文件技术可以藉由XPS文件档案格式,由使用者自订文件格式。现场的学员从XPS文件技术堆栈简报中,清楚地看到「Open XML Formats」,这是微软为解决办公室应用软件市场中对专属档案格式的疑虑,而推出的技术,特别是长期保存的文件。或者说,这也是微软为了在开放源码角 力时的主力。
可视化呈现动态数据
WPF同时更新数据系结(Data Binding)功能,与ASP.NET相较丝毫不逊色。其系结目标延伸到任何元素与属性,来源除了ADO.NET以外,更包括CLR(Common Language Runtime)对象、XML、WPF元素。此外,系结模型则涵盖一次(One Time)系结、单向(One Way)系结、双向(Two Way)系结等,使程序设计师在画面上,产生多个字段的连动效果。最后是动态系结,表示当事件(event)发生后,才驱动数据系结,并反应到画面上。这 场议程略为可惜之处,在于讲师仅简单地展示,却没有特别实例显现出WPF在数据系结的强大威力。但这只是冰山一角,有心的学员将会在接续的议程中体会 WPF的愿景。
WPF的愿景:电子文件
第二场议程一开始,讲师彭靖灏就以简报带出WPF的愿景:电子文件。讲师提到,微软针对展示层技术所揭橥的愿景,让使用者可以用计算机屏幕浏览各式电子文 件。过去,这方面的应用并不成熟,画面设计在排版或逻辑上都困难,使用者也无法习惯以计算机屏幕观看电子文件。随着展示层技术推陈出新,使用者对出版品与 电子书等要求越来越高,相同的要求也反应在Web Page上。
就实作技术面,WPF分为4点愿景逐步实现,除了第一场次已说明的宣告式程序设计,首先是整合、向量组合式图形作业引擎,目的是善用个人计算机的威力和强 大的3D绘图卡上图形处理效率。其次是WPF提供处理使用者接口、文件及媒体一致的作业方式,让使用操作的经验可整合至开发作业;最后是部署便利,允许管 理人员安全的部署及管理应用程序。
为了让学员更了解WPF的愿景,讲师立即以其未来目的补充愿景的意涵,也就是分辨率无关的图形、双精准度浮点坐标及转换(transformation) 架构、抽离硬件能力等。简单地说,电子文件关键在于浏览时的弹性,不因绘图卡、屏幕分辨率等而影响阅读。
精致的新字型与色彩显示技术
讲师提到电子文件所面对的十大挑战,有些必须仰赖第三方技术与WPF共同解决,但就WPF能力所及的革新,首先是电子内文的阅读舒适性,微软在 ClearType字型上增加Y轴反锯齿功能(YDirection Anti-aliasing),使字型在放大过程中不失真。此外,在色彩显示技术上,除了传统的RGB等3原色外,另新增色彩饱和度。
以操作者角度改善程序接口
讲师在后半场的议程讨论使用者体验此议题,他也很诚实地说到,虽然与主题没有密切相关,还是建议学员参考微软所提出的接口规画模型。WPF除了展示层技术 外,微软在Windows-based与Web-based整合设计的问题上,也从使用者角度重新思考操作接口的规画。Windows-based应用程 序常因为程序设计师的习惯,而采用许多专业术语(例如log),造成使用者无所适从。另一个问题则在于设计师过于遵循Windows设计规范,制式地在工 具列上套用File、Edit、Tools等功能,却忽略使用者最需要的按钮。相关的问题,均反应出传统Windows应用程序由设计师决定操作接口设计 时,缺乏引导使用者操作的问题。相对地,Web-based应用程序常藉由超级链接功能,隐藏了按钮的枯燥与制式化。WPF结合Windows与Web两 种设计后,可以让窗口化设计也具备Web化的指引模式。
就使用者接口而言,WPF既然是为了使设计师可以采用相同逻辑设计Windows-based与Web-based应用程序,但以往程序常区分为操作接口 (或称为Markup)以及逻辑(Code),并分属画面设计人员与程序设计师两种不同角色负责处理。此外,设计师还必须为程序接口撰写大量的程序代码, 藉以控制窗口上的对象。WPF不仅为画面简洁易懂,更延用一贯的宣告式程序设计,让设计师只要设定参数即可完成对象控制。曹祖圣风趣地说到:「我怀疑程序 设计师是否还有存在的必要?」。
从微软为WPF所提的架构堆栈上可知,WPF底层以Windows Vista操作系统为主,接下来是Windows Vista Display Driver Model,并采用DirectX绘图引擎,特别是Composite Engine,负责2D与3D绘图处理,包括材质、光源等,除了达到宣告式程序设计的目标外,其余3个目标在于整合操作系统、采用向量式的使用者接口 (UI)组合引擎、统一使用者接口、文件与媒体的程序设计方式、部署更简单等。
外号「Flash Killer」的接口设计工具:EID
另一个与使用者接口设计相关则是WPF技术中,用于实作接口设计工具:EID。虽然议程中曹祖圣简短地展示此工具,在简报文件中,表明EID可以产生 XAML程序代码,同时也是Visual Studio 2005原生支持的使用者接口格式,使得接口设计师可与程序设计师沟通,但他语出惊人地说到,此工具外号「Flash Killer」。
此工具是否真如其名,尚未有定论,但在现场展示过程中,我们可发现此工具与早期的Flash开发工具极相似,连时间轴(Timeline)的位置也相同,当图形依时间轴产生动态效果时,简直与Flash如出一辙。
2D绘图利器:笔刷功能
虽然WPF在多样化媒体处理上,无论是2D或3D绘图,以及影片处理等,仍急起直追着Flash技术,但至少在2D绘图上已经为设计师提供许多更便利的新功能,例如Visual Brush等笔刷(Brush)。
简单地说,设计师可以将屏幕上某个画面当成笔刷,刷到另一个平面,或当成材质贴到另一个3D平面上。对纯粹绘图工具而言,笔刷是很基本的功能,但在窗口设 计上,能不必经由复杂的程序设计产生这样的特效,实属2D绘图上的利器。议程中,讲师打趣地说着,这并非他的专长,「通常外包给画面设计人员,还是写程序 比较好赚。」学员或许可以听出WPF在2D绘图上将更为便利。
备受瞩目的XPS文件技术
WPF另一个引人注目的革命便是文件技术。微软在下一代文件格式,都将透过Packing技术封装成ZIP档,但使用者可采用其它扩展名。学员从这场议程 中将了解到,微软对XPS文件技术有着更大的野心,例如:除了直接存取XPS(XML Paper Specification,XML文件规格书)或Office 2007文件,企业用户将可以建立自订的档案格式,甚至开发文件管理解决方案。
虽然Office在办公室应用软件上的市场占有率高达90%以上,使得某些应用环境中甚至采用DOC档作为文件格式的交换标准,例如政府公文,差别只是文 件内容而已。新一代的XPS文件技术可以藉由XPS文件档案格式,由使用者自订文件格式。现场的学员从XPS文件技术堆栈简报中,清楚地看到「Open XML Formats」,这是微软为解决办公室应用软件市场中对专属档案格式的疑虑,而推出的技术,特别是长期保存的文件。或者说,这也是微软为了在开放源码角 力时的主力。
可视化呈现动态数据
WPF同时更新数据系结(Data Binding)功能,与ASP.NET相较丝毫不逊色。其系结目标延伸到任何元素与属性,来源除了ADO.NET以外,更包括CLR(Common Language Runtime)对象、XML、WPF元素。此外,系结模型则涵盖一次(One Time)系结、单向(One Way)系结、双向(Two Way)系结等,使程序设计师在画面上,产生多个字段的连动效果。最后是动态系结,表示当事件(event)发生后,才驱动数据系结,并反应到画面上。这 场议程略为可惜之处,在于讲师仅简单地展示,却没有特别实例显现出WPF在数据系结的强大威力。但这只是冰山一角,有心的学员将会在接续的议程中体会 WPF的愿景。
WPF的愿景:电子文件
第二场议程一开始,讲师彭靖灏就以简报带出WPF的愿景:电子文件。讲师提到,微软针对展示层技术所揭橥的愿景,让使用者可以用计算机屏幕浏览各式电子文 件。过去,这方面的应用并不成熟,画面设计在排版或逻辑上都困难,使用者也无法习惯以计算机屏幕观看电子文件。随着展示层技术推陈出新,使用者对出版品与 电子书等要求越来越高,相同的要求也反应在Web Page上。
就实作技术面,WPF分为4点愿景逐步实现,除了第一场次已说明的宣告式程序设计,首先是整合、向量组合式图形作业引擎,目的是善用个人计算机的威力和强 大的3D绘图卡上图形处理效率。其次是WPF提供处理使用者接口、文件及媒体一致的作业方式,让使用操作的经验可整合至开发作业;最后是部署便利,允许管 理人员安全的部署及管理应用程序。
为了让学员更了解WPF的愿景,讲师立即以其未来目的补充愿景的意涵,也就是分辨率无关的图形、双精准度浮点坐标及转换(transformation) 架构、抽离硬件能力等。简单地说,电子文件关键在于浏览时的弹性,不因绘图卡、屏幕分辨率等而影响阅读。
精致的新字型与色彩显示技术
讲师提到电子文件所面对的十大挑战,有些必须仰赖第三方技术与WPF共同解决,但就WPF能力所及的革新,首先是电子内文的阅读舒适性,微软在 ClearType字型上增加Y轴反锯齿功能(YDirection Anti-aliasing),使字型在放大过程中不失真。此外,在色彩显示技术上,除了传统的RGB等3原色外,另新增色彩饱和度。
以操作者角度改善程序接口
讲师在后半场的议程讨论使用者体验此议题,他也很诚实地说到,虽然与主题没有密切相关,还是建议学员参考微软所提出的接口规画模型。WPF除了展示层技术 外,微软在Windows-based与Web-based整合设计的问题上,也从使用者角度重新思考操作接口的规画。Windows-based应用程 序常因为程序设计师的习惯,而采用许多专业术语(例如log),造成使用者无所适从。另一个问题则在于设计师过于遵循Windows设计规范,制式地在工 具列上套用File、Edit、Tools等功能,却忽略使用者最需要的按钮。相关的问题,均反应出传统Windows应用程序由设计师决定操作接口设计 时,缺乏引导使用者操作的问题。相对地,Web-based应用程序常藉由超级链接功能,隐藏了按钮的枯燥与制式化。WPF结合Windows与Web两 种设计后,可以让窗口化设计也具备Web化的指引模式。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程