记得很早的时候看了一个哥们写的界面库的使用历程,当时还挺有感触的,不断地尝试,不断地被坑,最后有两条结论:
1、自己积累界面库;
2、买就买贵的、好的,并且提前根据自己需要协商好。
今天又重看关于界面库的介绍,说起来自己都没用过,积累下来,以后做个参考。
界面库 | 简介 | 优点 | 缺点 |
QT | 基于C++ 完全面向对象 跨平台 消息机制建立在SIGNAL()发送和SLOT()接收 | 1.文档全面,开发容易上手 2.开源与商业版都有 3.跨平台并且是二进制原生代码 4.有方便的嵌入式图形界面解决方案 5.不强制使用任何设计模式 6.XML支持 | 1.软件体积大,需要伴随QT库 2.界面响应速度慢 |
wxWidgets | 基于C++ 开源、跨平台 | 1.布局设计器很方便 2.只要可能,wxWidgets就会使用本地平台的SDK 3.偏MFC | 1.布局无绝对坐标式(windows默认的左上角像素定位) 2.文档不够全 3.dll多,工程过于臃肿 |
DirectUI | GDI+核心 收费 采用XML 部分开源 | 1.界面、代码分离 2.支持拖拽界面设计 3.不同分辨率、窗口大小下自使用布局(控件)的支持 4.标准控件换肤功能 | 收费 |
MFC | 浅层次封装API C/C++混合 事件驱动架构 | 1.需要使用Document/View模式以及模板,难以修改 2.函数名没有任何的连续性 3.无法创建大小动态可变子窗口 | |
其他的不是 很详细 | gtk,LibUIDK,Skin++,DSkinLite,WTL,DuiLib |
注:表格资料均来自网络整理,具体特点有待考证
界面库选择考虑的因素(转)
感觉这篇文章写得比较中肯,作为参考
我们认为如下几点是选择界面库/控件类产品时需要认真考虑的:
产品易用性
软件控件的API及使用 是否简单易用是我们需要考虑的一个重要关键。这个问题涉及到两个方面:
- 是否容易整合到现有应用程序中?是否容易在新的应用程序项目中应用? 界面控件类产品对应用程序的影响应该越小越好,要易于在现有应用程序中整合。这要求API简洁,同时也要求界面库易扩展,兼容性强。
- 开发人员能否及时掌握并使用 开发人员各有不同,需要让不同能力,不同经验背景的开发人员都能迅速掌握其使用方法并灵活使用。有些界面产品动则近百个API函数或者好几十个类,需要开发人员继承并二次开发,这样反而加大了开发人员的工作量。 同样有些界面控件产品甚至独立打造一套GUI的framework,如果不是国际知名的大公司,这样规模比较大的软件产品的架构设计,可扩展性,稳定性等都值得我们怀疑,这样的产品也会给我们的软件项目带来极大的风险。
产品稳定性
界面库产品当前的稳定性当然是首要考虑的问题,目前可以从以下几个方面来鉴别产品的稳定性:
- 是否有足够多的示例Demos来演示控件库产品的各个方面的功能特性
尤其对于DirectUI技术类型的产品,因为控件都为自绘产生,不再是标准的Win32控件,因此DirectUI类型的界面库的评估要格外的重视,如事后发现有些需求不能满足,有些效率不能跟上,那么对项目的影响将是巨大的。是否支持所需的控件?每种控件的效率如何 ?相应控件是否满足当前需求?如不满足是否提供相应的解决办法?最好能索取尽可能多的示例程序来测试各种控件,或者使用试用版编写Demo来测试项目所需的关键控件的特性。
- 是否已经有众多的成功案例
- 发布多长时间,同时是否一直有持续更新。
界面配置灵活性
界面开发一个很重要的问题是界面的样式是非常灵活的。比如一个button上面可能有一个图标,但有时也有可能需要两个图标;有时有一行文字,但有时也可能有两行不同颜色的文字。界面库产品都需要考虑这些因素。以下是我们在开发中经常遇到的问题:
- 控件界面的多样性。 如上面提到的不同位置多个图标,多行文字等。如果一个控件库的button只支持设置一个图标,这显然是不够灵活的,不实用的。有人可能会说“把几张图片,切图时做到一起不就可以了么,反正一个控件也可以理解只有一个背景。” 如果涉及到色调调整,这种做法会遇到麻烦,比如如下界面:
- 控件界面元素的动态变化。 控件的界面表现不是静态的,很多情况我们需要能根据程序逻辑动态调整界面表现。 比如:
这种情况在界面设计与开发中是非常常见的,界面库产品需要非常容易的支持此特性。
- 需要根据程序逻辑自绘界面。 界面库不是万能的,界面库的设计者需要考虑尽可能的避免让客户去绘制界面,但却无法做到100%避免,由于程序逻辑的需要,客户有时候需要自己绘制控件的某一部分。因此一个完整的界面库系统需要有自绘的支持,即在界面库绘制之后,让客户有绘制的机会。同时也需要有一套机制来管理自绘部分的图片,颜色等资源,不然无法保证界面色调的一致性。
以上是我们经常碰到的一些应用场景,这些应用场景要求我们的界面库产品能对应对灵活多样的界面表现。
界面库高效性
界面库的效率是一个核心问题。糟糕的界面库效率会带来极坏的用户体验,这也应是公司在考虑一个界面控件类产品时首要考虑的问题。可以通过以下几种方式来判断界面库类产品的效率:
- 拖拽窗口,观察是否有明显的停顿感。 可在一个系统下,找一些知名软件比较,如QQ/MSN等。如果有明显差异,则说明界面库在界面的绘制等方面存在欠缺。
- 拖拽窗口,观察界面控件是否有明显闪烁 如发生界面闪烁,则说明界面绘制的处理有些问题。有些界面库产品可能出于逃避这种拖拽窗口方式的检验的目的,直接通过程序修改,使得窗口拖动过程中只有虚框,而窗口内容不随之变化。我们认为这是不合适的做法,也将影响用户体验。用户可以自己决定是否在系统设置中选择“拖动时显示窗口内容”,而不是由一个界面库来改变用户的习惯。就目前所有知名软件来说,也没有见到有这种处理方式的。当您在选购界面库产品时,如果发现这种情况,则证明此产品在绘制效率等方面可能存在严重问题,建议您向界面库提供商详细了解相关情况。
- 软件启动速度 界面库产品应该对图片等资源加载做优化,以尽可能的减少界面库加载等带来的时间开销。也可以通过比较软件启动速度来比较界面库的效率。
- 软件色调调整时的效率 色调调整等操作一般会涉及到整体界面库的运算与操作,这种情况下也可以显示出不同界面库产品之间的效率差异。如果色调调整明显带来停顿感,则说明界面库某些方面的效率偏低;一般来说DirectUI类型的库这方面效率会稍微高些。
周边产品完整性
软件界面开发会涉及到很多部分,通用的界面库产品只是其中的一个需求。界面开发中还会涉及到其他行业相关的特殊控件、组件需求,如果控件提供商能一站式的解决这些问题,提供完整的界面解决方案,那将极大的减少界面方面的研发投入。
如IM即时聊天客户端产品,除了通用界面库的需求外,可能还需要制作聊天窗口的RichEdit扩展控件,配置面板,系统消息组件,这些都是一个IM客户端必须的。
产品升级及售后服务
- 产品是否有持续的更新和升级 所选择的产品是否有持续的、及时的升级及更新,是否有可靠的售后服务也是需要考虑的重点。 如果控件提供商不能对产品持续投入,则产品不能保持技术竞争力,也不能给客户以信心。一个优秀的产品成长的过程应该是根据客户的需求及行业的发展来不断升级和完善的过程。
- 售后服务是否有保障 有保障的售后服务是选择软件产品的基本条件。 一般来说以公司方式运营的产品在售后服务方面更有保障,双方可以以合同或协议的方式来保证产品的售后服务质量及持续性。