DirectUI Demo是一款专业的软件界面开发设计管理工具,它主要集软件界面案例演示、案例源码、案例皮肤、企业食品、案例杂志以及常见帮助文档等多项功能为一体,同时软件允许用户将界面中的相关资源与程序实现逻辑分类,方便开发者自定义设计软件程序中的不同界面,并且它也是全球唯一一款资源占用小、处理效率高的可视化界面库设计工具,需要的朋友不妨了解下!
基本简介
与标准控件换肤类界面库不同的是,DirectUI本身具备了标准控件换肤的功能,但其更强调用户自定义界面的开发,提供可扩展的多种布局控件、几十套可扩展的功能强大的界面控件。它可以构建任何一种类型的2D界面框架。DirectUI吸取了游戏绘图引擎的精髓,并在其基础上创造了脏区域局部更新机制,多核CPU多线程渲染,充分提高了界面库的运行效率,与常见的游戏引擎相比,占用极低的CPU时间。目前支持GDI、DirectX、OpenGL等绘图引擎。值得一提的是,DirectUI采用平台+插件的架构模型,所有的布局、特效与控件均采用插件方式管理。唯独这样,发布时的体积才可以做到最小。新布局,新特效或新控件的创建才更具灵活性。DirectUI的应用范围广泛,可以应用在互联网客户端、工具软件客户端、管理系统客户端、多媒体客户端(如KTV、触摸屏)、3D/2D游戏的客户端与设置画面窗口等。
内置控件
DirectUI内置4组控件,分别为:
1) Kernel组:包含常用的15个左右的控件,如Button、CheckBox、RadioBox等,一般的应用都需要用到该组的大多数控件。虽然这里控件是用户最常见的,但它们的功能已经远远超出Windows自带标准控件的功能,也超出VB、Delphi、C#等开发工具自带的控件。比如Button的五种状态、图标显示、文字样式、旋转、异型区域感应等特性都充分挖掘了界面领域的需求。
2) Office组:包含与办公软件相关的控件,如Taskpanel、Ribbon、OutlookBar等,在开发办公类的软件中,这些控件比较常用。在一般软件的设置页面也经常用到Taskpanel与OutlookBar两种类型的控件。
3) Advanced组:包含相对比较高级的控件应用,比如滚动精灵、字幕控件等。在一些高交互性界面中会用到它们。
4) Industry组:包含与工业软件相关的控件,比如电压表、温度计等。
随着时间的推移,DirectUI将推出更多种类的内置控件。当然用户也可以根据自己的需求,创建自己的分组,构建属于用户公司或产品领域特有的控件。比如证券行业的股票行情控件。DirectUI控件的优点在于它具有二进制共享的特点,所以一次编写控件到处使用的想法可以很好的得以支持。
软件特色
1.3D界面引擎
从技术核心上彻底改变了以往的2D坐标系统,每个控件元素都支持3个坐标值:X、Y、Z。将传统的平面窗口改变为三维可旋转的窗口,用户可以多视角来操作界面上的内容。即便是在界面斜放或侧面的时候,都能够用鼠标准确点击里面的控件。这个交互体验完全实现了真实世界的用户体验。在3D的窗口界面上,还可以放置2D的控件面板。全面灵活地实现了2D界面中放置3D界面和3D界面中放置2D界面的功能。性能上做到了非常低的CPU占用和内存占用。一改以往复杂三维界面占用大量CPU时间的做法,UIPower充分发挥显卡硬件的性能,将所有与图形计算相关统统交由GPU去处理。经过长时间的测试和验证,目前的绝大部分的电脑的配置都能流畅地运行该3D界面引擎。
2.界面制作工具
DirectUI将界面开发工作由原先的程序员工作量比例为90%转向设计师工作量为90%。这种转变也说明界面开发工作也有原来的繁琐、不可视、不可复制性向低门槛、易于搭建、可视化、可重用性方向发展。所以DirectUIBuilder工具的定位主要面向UI设计师,其次才是软件工程师。而UI设计师使用该工具的时间比例在90%以上,软件工程师一般使用该工具关联一下事件与查看对象名称,所以时间比例为10%以内。所以界面制作为何需要可视化?用XML配置不也可以吗?可视化的好处在哪里?类似于这样问题的回答就变得显而易见了。界面本身就属于视觉领域,用不可见的工具来制作可见的东西,岂不很不直观!而且对于XML的领悟,对于一般的设计师来说比较困难,通常不具备这样的技术基础。而即便有了这样的基础,还要去学习一大堆界面库特有的控件节点写法也不是那种容易上手的事情。当控件在调整时也无法实时看见修改后的状态,所以有一个界面制作工具供软件研发人员使用就变得尤其重要。一款界面库存在多大的生命力,很大程度上取决于其提供工具的直观性易用性,能在多大程度上提高用户开发界面的效率。DirectUIBuilder属于平台的一部分,所以当有新特效、新控件、新布局创建时,不必修改它的内部代码,不必重新编译。所以当用户根据自己的需求创建了一个新控件后,DirectUIBuilder可以自动认识该新控件,而且像平台默认提供的其他控件一样地进行可视化的使用。DirectUIBuilder的提供也成为第三代界面库是否成熟的标志性工具之一。
3.界面与业务分离
界面库要达到的最高境界是界面与业务逻辑的彻底分离,就是说只要业务功能不添加的情况下,无论怎么修改界面及界面功能,都不可能影响到用户应用程序的修改与重新编译。DirectUI通过向用户提供可视化界面工具、脚本控制、界面与业务分离与集成解决方案(界面抽象层UAL)来实现。其中分离与集成解决方案是实现彻底分离重要步骤。DirectUI技术支持人员会协助用户将应用程序中的界面功能按不同类别分析出来,并采用相应的语言(如C++/C#/VB/JAVA等)描述出界面抽象层UAL。此时,界面实现人员可以与业务分离人员同步工作。界面人员从界面抽象层派生界面实现层,并采用DirectUI提供的接口与方法进行各种功能的实现。业务分离人员从界面抽象层派生界面虚拟层,采用各种空操作与提示性输出操作来实现里面的各项功能,虚拟层的实现十分简单明了,所以一般在很短的时间内就可以完成了。完成虚拟层以后,业务人员就可以在应用程序的入口处创建那个虚拟层,然后在程序各处需要有界面操作的地方进行虚拟层方法的调用,完成后即可调试运行,当然这个时候还不能显示界面,只能通过调试窗口的输出来获得界面功能的确认。一般编译成功就算该步骤成功结束。当界面实现人员完成了所有界面实现层的工作后,就可以提交给业务人员进行虚拟层的替换了。替换方法很简单,只要在应用程序入口处创建界面实现层就可以了,应用程序的其他地方都不用做任何的修改。因为虚拟层与实现层都派生自共同的基类,而我们在应用程序内部的调用就采用基类提供的方法。所以可以直接调用。至此,界面与业务逻辑的彻底分离的工作就完成了。值得一提的是,这个分离将在用户软件的以后的生命周期内永远有效,即便以后采用别的界面库来实现,而且可以很容易地实现别的界面实现层,比如OpenGL界面实现层,WPF界面实现层等。
4.脚本控制
DirectUI的界面逻辑既可以在用户程序中调用进行控制也可以采用脚本进行控制。目前支持的脚本为Javascript与Lua两种,用户可以选择其中的一种来使用。何为界面逻辑?为何需要脚本来控制呢?所谓界面逻辑,指的是与界面操作相关的一系列方法与事件。比如在界面中有一个按钮用来控制左侧面板的缩进与展开。在传统的界面开发方式下,我们需要在应用程序里面响应该按钮的Click事件来对左侧面板进行位置的控制。这样的处理方式会导致界面逻辑的修改而影响到应用程序的重新编译。而界面逻辑的变化与调整在整个软件的生命周期内是非常频繁与普遍的。所以找到一种界面逻辑的变化不会影响到应用软件的重新编译的方式成为第三代界面库的一大技术要点。DirectUI很巧妙地运用了脚本特有一些特性,将内部生成的控件实例对象通过脚本规则导出到外部,由脚本来调用控件的接口与方法。用户写成的脚本.js或.lua被打包进DirectUI的皮肤文件中。这样,当程序切换皮肤文件时,也把相应的界面逻辑也一同切换了。没有脚本支持的界面库是无法做到界面与业务逻辑的彻底分离的。所以,是否支持脚本控制就成为界面库能否真正实现界面与业务逻辑彻底分离的标志性技术点。
5.支持Alpha混合
DirectUI吸取了游戏引擎的精髓,提供了2D图像的动态Alpha混合。用户可以控制每个图元对象的不透明度,从而可以很灵活地支持各种控件效果与动画效果。Alpha混合在GDI中的效率是比较低下的,所以DirectUI在算法方面,采用了MMX优化AlphaBlend指令、多核CPU多线程同步混合和脏区域局部更新机制来解决原有GDI函数效率低下的问题。该项技术在国内外界面库行业尚属首创,从而很好地满足各行业对性能的苛刻要求。根据综合测试发现,经过优化后性能提升了22倍之多。特别在低配置的机器上运行也很流畅。在DirectX与OpenGL绘图引擎中,主要采用脏区域局部更新与多线程纹理绘制来提升总体性能。经过优化后性能提升了10倍左右。
6.高速图像渲染
渲染引擎是最核心的功能模块,其功能强弱、效率高低、内存占用高低等都直接影响到DirectUI整体的性能。绘图引擎采用纯虚的图像设备上下文来对各种图像渲染引擎进行全面的支持。Virtual RenderDC将各种图像与文字的处理设计成各种类,并将每个类的方法设计成纯虚函数。如果要支持例如DirectX绘图引擎,只需要将那些纯虚的各种类与接口实现即可。所以通过该机制DirectUI实现了多渲染引擎的支持。
7.最小依赖
DirectUI定位于各种软件行业的界面整体解决方案。所以通用性是其一大特点。无论是互联网还是多媒体娱乐都无不出现它的身影。既然要如此的通用,那么没有第三方的依赖是它满足通用性的必要条件。这里的第三方不光是指除微软开发的软件库,更包含微软开发的MFC库、DotnetFramework等。所以发布使用了DirectUI的应用程序时,只需要带上DirectUI.dll文件就可以了,无需再打包别的DLL。这样的应用程序可以用在Windows95以后的所有的操作系统上。与微软的WPF相比,DirectUI正是以超强的兼容性和性能绝对优势才得以博得用户的信赖与选择。DirectUI采用了Windows SDK,STL,JS/LUA,XML,ZIP,RenderEngine等技术实现了无依赖的DLL库。
8.支持控件多种布局
在传统的界面开发方式下,控件的布局一般通过相对于当前窗口的绝对坐标与WM_SIZE事件处理函数中计算控件的相对位置来进行控制。这种方式的弊端:灵活性不够。如果需要调整多个控件的布局位置,需要修改资源窗口上面控件的位置或OnSize处理函数中的相应参数(这种方式是不可见状态下的调整,想要看调整效果必须编译运行当前程序,一个控件的位置调整会反复多次的修改、运行查看,再修改、再运行查看的过程)。这样会给软件开发维护带来很大的不便。DirectUI在可视化开发工具DirectUIBuilder环境下提供了4大类布局控件:HorzLayout,VertLayout,GridLayout,DockLayout。用户可以根据自己应用的需要扩展新的布局控件。采用系统提供的几大类布局控件,可以所见即所得地轻松完成各种复杂的布局应用。这样的布局一般独立于程序的代码,给软件的开发与维护提供了极大的方便。如果用户需要在程序运行过程中根据相应的界面逻辑或业务逻辑进行布局参数的动态设定,DirectUI提供了布局控件的接口与方法,用户可以调用相应的接口方法对参数等进行动态的修改与应用。支持多种灵活的布局控件是第三代自定义界面开发工具的一大标志。唯有布局的丰富才能最大程度上简化控件之间的层次关系。
9.最小的内存占用
无论在什么年代,软件对内存的占用是一个永恒的话题。即便到了今天内存配置已高达4G甚至更高,但还是得关注软件的内存占用多少。因为用户的电脑都是多任务多进程方式执行,而且现在软件的功能都相当的丰富,他们的内存消耗自然就多。所以,哪个软件开发商更注重系统内存的极少占用越会博得用户的好感。而对一款以贴图为主的界面库来说,DirectUI更需要注重对系统内存的最小占用,以满足用户的苛刻要求。DirectUI采用了共享资源、动态压缩使用频率低的图像、按需加载、显卡缓存纹理等自主研发的专利技术。经过内存优化后的较没有优化的减少了10倍之多的占用。DirectUI还提供了一整套内存优化的用户操作指南,在该帮助中提示用户如何切割图像以求最小的内存占用与最优的执行性能。在实际项目开发中,DirectUI技术支持人员将给出更具周到的窗口布局、控件选择等方面的宝贵建议。
10.插件式控件管理
一个界面库好不好很大程度上取决于是否有足够丰富的控件。而如何管理数量众多的控件并且保证用户在发布时只会打包用到的一些控件。这就给界面库的架构提出了一个全新的挑战。第一代(比如BCG、CodeJock等)和第二代(Skin++)的界面库都是铁板一块,把所有的功能都放在一起,这样用户发布时必须带上很大的DLL。在互联网客户端应用中是特别不合适的,因为软件开发商都会为软件的体积承担流量的成本。所以DirectUI对可以扩展的部件采用了插件式的管理,控件就是一种可扩展非常强的一类部件。插件式管理的好处是即插即用,易于维护,易于升级,易于独立开发,对平台的依赖性小等。DirectUI提供了VS2003-VS2010的控件开发向导。用户可以很方便地使用该向导开发出满足DirectUI规则的控件。所谓控件,其实就是一堆属性、一堆绘图、一堆事件的集合。而DirectUI平台把所有控件都经常用到的这些属性规则、绘图规则、事件规则统一抽象为各种控件开发可用的工具集。所以控件开发人员只需专注于控件的界面逻辑,并调用平台提供的这些工具集中的某些小工具,即可以很容易的地实现出各种功能的控件。与传统的开发自定义控件相比,DirectUI提供的控件开发规则要容易的多,而且不容易出错,确保运行的好效果。
∨ 展开