作者:Tony Qu
(本文未经许可不得转载)

上次我写了一篇《WPF简介》,当时我仅仅是对WPF有初步认识,但通过近期的学习之后,我开始逐步领会WPF的真正意义,它不仅仅是一项技术而已,它给我们带来的将是一场UI革命。

回顾过去

在过去几十年里,Windows的用户界面在不断的改进,特别是Windows XP的推出,给人眼前一亮的感觉。在过去的日子里,有许多程序员和公司为了实现类似于、甚至优于Windows XP的用户界面,大量制作了基于Windows Forms的自定义控件,通过重写OnPaint来对控件做彻头彻尾的美容。随着Web 2.0的不断流行,Web界面也逐步开始仿造Windows Forms的路线,开始制作类似于Windows Forms的界面,这些控件它们可以像Windows Forms一样拖动、有相当漂亮的外观,再加上AJAX,一切都似乎和Windows Forms没什么差别了。但这只是用户的看法,对于程序员来说,如今要完成一个类似于Windows Forms的Web界面谈何容易,你必须精通JavaScript, AJAX, XML, XSLT等,这些技术每一样都需要太多的磨练,特别是JavaScript,还要考虑浏览器兼容性,工作量会更加显著。

在以上的Windows Forms和Web Forms开发中有一个很明显的特点,程序员永远要承担一部分美工的工作,即使美工帮你把一些图片都设计好了,你还是不得不用GDI或者HTML Table来帮这些图片拼凑起来,这是很寻常的事,相信每一个有过UI开发经历的程序员都体会过。

在这里我不得不提一下Adobe Flash。在Adobe收购Macromedia之后,Flash开始走专业化开发路线,相继出现了可以用于开发商业级Flash应用程序的软件包,这个如今几乎可以运行在任何一台计算机上的矢量图形软件的确做的很不错,它很好地解决了速度和漂亮的关系,使得在Internet上运行及其漂亮的界面成为可能。但到目前为止,使用Flash的人大部分是美工,这就决定了即使开发应用程序,很多也是半路出家的美工们在做开发,我并不是看不起这些美工,但术业有专攻,美工能力强,不等于编程能力强。这就导致目前市面上大部分的Flash应用程序停留在一个初级阶段,无论是OO还是架构设计,都无法达到成熟商业应用的等级。

WPF带给我们什么

最让人熟悉的肯定是WPF的XAML语言,这一语言自从Avalon阶段就被炒得沸沸扬扬,很多人都说这是一种全新的语言,它可以如何如何如何。。。但有多少人知道它的真正意义。XAML在WPF中的真正用途是界面描述,当然它也可以用来写代码。XAML将有效地把界面从代码中分离出来,使得程序员和设计师可以更好地合作,创造出更加优秀、漂亮的应用程序,这是以前人们无法想象的。虽然使用xml作为界面载体并不是什么新技术,但微软把它作为一个战略来推广自然将大大增加它的使用范围,通过微软的一系列开发工具,可以让初级程序员也可以基于这一架构开发出优秀的软件产品来,这就是微软开发工具的魅力

正因为XAML可以做界面描述,而且微软正在打造一个全新的基于XAML的开发架构,在未来的某一天我们将看到大量的调用XAML的WPF程序,在1-2年内,我们的浏览器中将大量安装WPF浏览器插件,我们将看到许多不可思议的漂亮应用程序,这些都是WPF带给我们的。

XAML本身的灵活性是很好的,从理论上讲它可以描述任何想要描述的东西,这里面自然也包括矢量图形。

目前微软正在加紧开发一整套基于XAML和WPF的矢量图形解决方案,并将包括在一个叫做Microsoft Expression Studio软件套装中,在这个软件套装中有Expression Web, Expression Blend, Expression Design, Expression Media。详细的信息,大家可以去看看http://www.microsoft.com/products/expression/en/default.mspx。在这里我先对这四款软件做一下简介:

Expression Web
类似于原来的Microsoft FrontPage,增加了不少.net的元素在里面,但总体界面看起来还是像FrontPage的升级版

Expression Blend
专门用来设计界面级XAML的软件,这款软件是专门供界面设计人员使用的,而WPF编码可以在Visual Studio中完成。

Expression Design
专门用来设计矢量图形的软件,也是基于XAML的,因此设计出来的东西都是可以嵌入WPF界面中的

Expression Media
专门用于做媒体编辑、管理、播放的工具,估计会与Microsoft Media Foundation捆绑起来。

其中的Microsoft Expression Blend和Microsoft Expression Design就是专门为WPF和XAML设计的。从软件功能上看,Microsoft Expression Design是专门为了与Flash的矢量图形编辑软件竞争而开发的,至于Microsoft Expression Blend+Visual Studio Orcas则更像Flash的Apollo。从这些迹象来看,微软已整装待发,准备进入矢量图形领域,如果不出意外地话,在未来2-4年里,WPF将占据至少30%的市场份额,成为矢量图形领域可以与Adobo相抗衡少数几家公司之一。

WPF产业链将在2-3年内形成

随着WPF的大面积推广,基于XAML的矢量图形设计产业将很快形成,当然在最初的1-2年里可能无法吸引高端的专业设计人才加入,因此设计出来的界面也会稍显生硬,就像当初Flash刚开始流行的那几年,但在之后,将会逐渐走入正轨,大量的专业设计人才将开始学习XAML,并将原来的Flash作品逐步移植到XAML中。

这其中将重要包括两个产业:

矢量图形/动画设计产业
这是一个围绕Expression Design展开的产业,该产业将十分类似于目前的Flash产业链,会有大量的矢量图形设计公司涌现出来。还有一些公司则会做一些动画品牌,就像当年showgood这样的品牌。另外大家要注意一点,WPF不单单支持2D矢量图形设计,也支持3D矢量图形,因此这一产业要比Flash目前的产业发展的更加壮大,虽然一些第三方公司提供了一些支持3D的Flash设计软件,如Swift,但这始终无法弥补Flash的“先天不足”。

界面设计产业
这是一个围绕Expression Blend展开的产业,主要负责为软件公司提供界面设计外包服务。该产业有一部分会与矢量图形设计产业重叠,因为在界面设计中要大量嵌入矢量图形。但要注意,这一产业与传统的Flash界面设计产业是不同的,它所吸引的将是更多的专业软件UI美工,而不是动画设计师。Flash之所以无法形成这一产业是因为Flash的应用程序设计始终停留在初级阶段,到目前为止Flash仍然无法将界面和代码彻底分离,这就直接导致了后期维护成本太高,以至于很多架构师或系统分析师即使有很高的界面需求也不会考虑采用Flash来设计完整的应用程序,而只是插入一些Flash动画来做补充,最典型的例子就是QQ和MSN的动画表情。

当然这两个产业还会带动一些周边的产业,如图形设计培训产业、包装设计产业、媒体等,在这里就不一一介绍了。

总结
从2007年3月份开始,微软将正式开始宣传其下一代开发架构——.net framework 3.0,WPF自然是其中的一个重头戏。在此之后各种推广工作也将陆续展开,UI的革命即将开始,正如Adam在《WPF Unleashed》中所说的:用WPF创造科幻片中的奇幻般的应用程序并非难事。

在看完本文之后,大家可能会有这样的疑问:是不是以后Flash的东西会越来越少呢?当然不是,基于XAML的矢量图形的确会风靡,但不会完全占领Flash市场,Flash在动画设计方面的优势仍然存在,因此充其量只是共同发展的局面。现在还有一个不确定因素就是:微软高度对于这一产业的重视程度,究竟会扶持到什么程度没有人知道,中国市场自然将成为这一产业发展的重头,但从微软总部目前对于微软中国的投入来看,似乎有些悬,至于接下来会发生什么,大家还是拭目以待吧。

以上言论纯属个人观点,有说得不对的地方还大家指正。

WPF——微软的UI革命相关推荐

  1. WPF - 简单的UI框架

    实现了一个简单的WPF应用程序UI框架 ,分享出来.界面效果图如下: 运行效果如下: 打算持续更新,将左侧面板所有功能模块全给实现了. 喜欢的可以下载源码体验:https://github.com/D ...

  2. WPF强制刷新UI界面

    WPF强制刷新UI界面 需求 代码块 需求 在当前ViewModel类中执行某种数据列表的操作,希望View中绑定的Model类随着数据列表的改表实时刷新在View的界面上,我们可以定义一个界面强制刷 ...

  3. 官宣!微软跨平台 UI 框架 .NET MAUI 6 正式发布!

    翻译:Wendy Zang 校验:李卫涵 - 微软 MVP:朱震 - 微软 MVP 排版:Rani Sun 欢迎使用 .NET 多平台应用程序 UI.此版本标志着我们在统一 .NET 平台的多年旅程中 ...

  4. WPF Tile=” 变量 UI 双向绑定”x:Class=Problem/

    <TextBox Name="txtAbout" Tag="废话">最近才开始正规的学习WPF,以前只是激动,观摩,欣赏,不敢亵玩焉!我这个从游戏而 ...

  5. C# Wpf异步修改UI,多线程修改UI(二)

    1.使用定时器异步修改 这是相对比较简单的方法 在Wpf中定时器使用DiapatcherTimer,不使用Timer原因: 在一个应用程序中,Timer会重复生成time事件,而DispatcherT ...

  6. 搭建 WPF 上的 UI 自动化测试框架

    简要说明 OEA 1.0-2.0 框架中,界面都是以 WPF 技术作为基础平台开发的.我们需要对开发出来的系统进行自动化测试,而 .NET 平台的自动化测试平台在公司内部还没有其它部门完成,所以我们在 ...

  7. 基于Visual Studio扩展的WPF工业组态UI控件-ConPipe

    本文的组态控件是由<轻量而敏捷的工业组态软件UI设计工具-ConPipe Studio 2022> 和 <轻量而敏捷的工业组态软件UI设计工具-机械组态篇>两篇文章中的方案全新 ...

  8. wpf 使子ui元素可视区域不超过父元素_对游戏UI设计的一点思考

    UI决定了一个游戏的初体验,甚至决定了玩家的初始留存,甚至可以说决定了一个游戏的品质,虽然看起来是表象的,却是直指游戏核心的.简单讲,玩家认可一款游戏永远都是造型场景好,剧情好,画质棒:但是玩家骂一款 ...

  9. 2019,UI革命,暗黑模式的崛起

    前言 随着iOS 13和Android 10的正式发布,一个名词"暗黑模式(Dark Mode)"逐渐走入了大家的视野. 各大APP都将"暗黑模式"的适配列入了 ...

最新文章

  1. edge linux 下载软件,在Linux上安装edge浏览器
  2. c include 多层目录_python+C、C++混合编程的应用
  3. jquery 动态加载html,jQuery – 动态创建iframe并加载页面
  4. AutoCAD打印设置
  5. Ubuntu22.04 Python 深度学习环境配置记录
  6. VBS整人代码大合集
  7. 黑苹果hackintosh wifi驱动安装
  8. SimpleDateFormat 中的 yyyyMMdd 与 yyyyMMDD
  9. Selenium 爬取微信公众号文章并保存为pdf与长图片(2022-06-09更新版)
  10. 视频直播连麦技术详解
  11. Eslint+Prettier 实现代码 git 提交时自动格式化及修复
  12. python学习之数据爬取及其可视化分析(一)
  13. 一道逻辑推理题的程序实现(纯属娱乐)
  14. oracle从mysql抓数据_关于oracle数据库读取数据的三种方式
  15. 天翼云内网服务器映射端口,天翼云服务器创建对等连接(不同账户组内网)
  16. 聚合物电容器工作原理及其应用
  17. Java游戏碟中谍,煮 Retrofit 论 RxJava(一)
  18. 腾讯云系统镜像和使用镜像创建云主机
  19. MySQL的使用方法
  20. linux格式化硬盘文件恢复,Linux格式化后数据恢复

热门文章

  1. 【VirtualBox】NAT模式下主机访问客机的设置
  2. HDU 1269 移动城堡 联通分量 Tarjan
  3. 用户名 不在 sudoers文件中,此事将被报告
  4. SQLSERVER中如何忽略索引提示
  5. sql 密码随机生成
  6. 题解 P2387 【[NOI2014]魔法森林】
  7. A 01 如何理解会计中的借和贷
  8. 在Prefetcher中取消robots.txt的限制
  9. Advanced Installer 制作.NetWeb部署安装包
  10. [原创]按键小精灵9通用去广告破解补丁