吵吵   2012-11-23  阅读:3,738

很多程序界的大牛们疯狂的追捧命令行,也许并非是因为命令行给他们带来的方便、快捷和高效,另有一种原因可能是,自从图形界面程序出来后,写出一个界面交互好的程序来,就变为了一个比较麻烦的事情了。

最初的程序员们追求的也许只是功能的实现而并非是外表的华丽,以至于在windows95出现以后的那些年代,我们有了各种各样的办公或者管理软件,然而他们的界面在今天看来简直糟糕透了。在很长一段时间这个状况并没有多大的改变,因为我们总不能要求程序员们是搞美术的吧。

直到今天这个电脑并非只是程序员用的年代,写一个程序考虑的是其面向的用户,交互就显得十分重要。程序员们也许还是专注于业务和逻辑,但是界面设计却由美工在执行了。如今这个年代,炫丽的外表多成为了用户追捧对象了,界面的漂亮与否已经成为了一个重要的影响因素了。

前段时间下载了delphi XE2,发现连delphi这样一个快速开发工具都加入了VCL Style 这样一个界面设计的功能了,不能不感叹这将是一种趋势了。

界面编程

想到最初接触vc的时候,改变一个按钮的外观使用的是重载ONDRAW的方法,然而这种方法毕竟是太受限制,很多动画式的按钮就完全没有办法了。

后来有用过direct UI和其他的一些界面库,有些是基于消息的,有些已经实现了业务和逻辑与界面分离的,总的来说,完成一些贴图式的界面就还不错,但是调试起来也遇到过这种那种的问题,让人比较头疼。

写吵吵登陆器的使用我就直接用了一个窗口,然后用GDI一个一个贴图自己画了,实现出来的效果好像还不错,但是在事件代码里面的东西就多了,比如一个鼠标移动的动作就会进行很长的判断是否在按钮的范围内,等等了。有想过独立出xml文档类出来实现一些基本的button等元素,碍于没有时间就没搞了。

看到迅雷的BOLT引擎,感觉还不错,其中有篇文章将分为了四个时代:
第一代 :SDK开发,使用系统默认控件
第二代 :基于窗口子类化的自绘控件皮肤库。绘制通常基于GDI。控件类型和系统一致。
第三代 :提供一套完整的体系(窗口,绘制等),所有的控件都基于这个体系开发。本身提供很多功能更强的控件,并有统一的方法开发/使用新控件。这一代库主要是解决实现能力问题。由于Windows的系统限制,二代库有很多功能局限。(比如按钮发光这个需求需要按钮的实现代码可以绘制到按钮子窗口以外的)
第四代 :布局文件+脚本语言的开发模式,依靠”组合”抽象界面并围绕这个概念搭建 。不提供控件但提供易学易用的控件开发模式。不提供内置特效但能让使用者轻易开发自己的界面特效。

BOLT的实现思想也很不错:

Bolt界面引擎通过观察交互设计师的工作流程,对整个交互开发的思维方式进行了创新,提出了“完全基于原子对象组合交互”的概念,并强制在开发中使用MVC模式。界面引擎基于这个理念,提出“界面引擎不提供控件,但提供开发控件的方法”,让每一个会使用“Bolt”的工程师都天然掌握了开发可复用界面控件的方法。并且从这个概念出发,“Bolt”能轻松开发各种绚丽的动画效果,做到“不提供内置效果,但提供了一致的动画效果开发思路”。 古语有云:“授人以鱼,不如授人以渔”, Bolt界面引擎就是希望通过掌握新的思路来提高生产力,让开发人员能真正掌握开发优秀交互的关键技能。

微软也许也开始意识到了界面的重要性,于是在net framework 3.0中,WPF悄然而生。

WPF最重要的特色,矢量图的超强支持 。兼容支持2D绘图,比如矩形、自定义路径,位图等。文字显示的增强,XPS和消锯齿。三维强大的支持。包括3D控件级及事件,与2D及视频合并打造更立 体效果。渐变、使用高精确的(ARGP)颜色,支持浮点类型的像素坐标。这些对GDI+远远不及的。灵活、易括展的动画机制!.Net Framework 3.0类库提供了强大的基类,只在继承就可以使现自定义程序使用绘制。接口设计非常直观,完全面更对象的对象模型。使用对象描述语言XAML。使用开发工具的可视此编辑。

WPF中的所有显示是通过 DirectX 引擎完成的,也就意味着一个高效的3d界面渲染引擎也许是指日可待的,一个windows程序在未来也许和游戏呈现出的交互没有多大的区别了。

杂七杂八的说了这么多,不知道元芳,你怎么看呢?

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

发表评论

电子邮件地址不会被公开。 必填项已用*标注