先把最近看到的一些收录一下,以后慢慢更新:
1、迅雷7的 "Bolt" 界面引擎
(摘一段别人写的)
以下内容仅针对界面引擎。
迅雷从5越到了7(其实6是存在的);迅雷7的一个显著改善是UI(User Interface - 用户界面)。
从官方博客文章看,界面被放在了特性的第一位,可见对界面的改善是一个重大升级。
关于用户界面的升级:
对于一个终端用户,关注的主要还是下载速度,迅雷7的下载速度基本没啥改善(听说);
不过作为编程圈一员,这个东西不能忽略。我很清楚迅雷的工程师们需要花多少时间在开发这个上面。
(这个界面框架可以说是伟大的,如果我写完了我也一定会高调一下..虽然我很清楚用户大致会无视这番话)
没有迅雷账户(不过现在也是- -||),故之前是通过别人的体验来审视这个UI Engine,大致了解这个界面引擎如下(注:不是完全正确的):
1.迅雷7有很炫的动画效果,并且很流畅
2.迅雷7可以在非Windows Vista(+)上完成Aero特效(QQ不能)
3.迅雷7的界面引擎性能非常高效,时间空间双优化
于是开始好奇迅雷采用的技术(注:这是猜想):
1.如果真有这回事,那么迅雷是怎么让非Aero用户呈现模糊的?
1.1.迅雷用了什么模糊能够完成高效率任务?
1.2.实时模糊很费资源,看上去迅雷用了什么底层的技术成功拦截到了“背景更改”?还是..那低效率的办法?还是..背景更改时无动于衷?
2.迅雷的界面渲染是自绘么?还是建立在系统的基础上?
然后今日逛到了耍下的博客,发现原来迅雷7有破解版,赶紧下载下来 在本机XP上实测。
0.测试环境
CPU: Intel Pentium 4 1.80GHz
内存: 1.50GBytes
显卡: Intel 82845G (这个显卡是够破烂的了。好处是能排除硬件加速)
1.安装
看到了新Logo:蜂鸟~设计得不错.安装界面没有预想中的开启透明等效果,只能干等迅雷7的主界面(= =..)。
值得注意的是,迅雷7的安装界面的滚动条开启了类似于Windows Vista(+)中的光环效果。
效果很炫,不过安装时这个效果有点卡。
安装时我的电脑几乎不能做其他占用CPU略大(>30%)的事情。
2.“登录”
在我的计算机上迅雷7的主界面并没有默认开启阴影和透明,倒是登录窗口已经开启了阴影(嗯,有点希望)。
焦点框转移瞬间图如下:
看看这里有什么效果:
1.阴影
2.蓝色的焦点框很有动感,界面库的全局管理协调确实很到位
3.默认按钮上有一圈动态光晕,效果很棒,超越微软腾讯(个人观点),确实也很流畅
拖动一下,没有任何滞后效果,透明混合得也很流畅,于是关于这个对话框得出结论如下:
1.采用的是LayeredWindow
2.自己绘制了所有控件 包括有点麻烦的文本框
3.采用了类似于Windows的Shell Manager..(不解释)
随便键入用户名密码(仅限于破解版),登录成功进入主界面。
很好 又有一个效果了。登录面板消失得很有动感,先缩小然后放大。似乎也比Aero的好一些。
两次叠加效果图如下:
3.“皮肤主题”
第一眼就见到右上角有一个小衣服的图标.赶紧点开,是意料之中的换肤。
点开后出现第一个惊喜,换肤面板采用了类似于腾讯QQ概念版的翻面效果。(至此已经有2个面板效果了)
翻面瞬间如下:
1.在本机上 翻面看到了 不过大致只看到了8帧左右
2.翻面时,很清楚看到了白色方框倾斜时的锯齿 看来为了加速没有采用图像柔滑处理
终于 看到了开启透明的设置。
(A)点开“开启透明”的瞬间,发现的变化如下:
1.界面卡了1s,看来在准备透明
2.主内容缩小 留出给阴影的部分,效果完成
(B)尝试取消透明 变化如下:
1.原先阴影部分变黑 窗口为矩形
2.窗口四角变为圆角
3.主内容放大 撑满界面
接下来设置透明度,很惊喜,主界面开始透明。不过没有开启模糊(Windows XP) 于是一开始好奇的技术全部删除-.-。
可以确定 主界面现在确实处在了Layered Window下。
1.注意到,迅雷影视部分是一个网页。尝试拖动主窗体,在本机上这个网页部分明显滞后。嗯,还是双窗体。没有什么有意思的技术。
迅雷何时采用LayeredWindow了?
迅雷悬浮窗首先用了这个技术,从单纯的SetLayeredWindowAttributes到后来的UpdateLayeredWindow
接下来是某版本的迅雷的资讯,试验了一下模拟没有模糊的Aero窗体边框
2.观察右侧动态部分的文字,文字看上去不舒服。似乎是Gdi+画的
外一则:Gdi+在处理ClearType文字绘制到半透明位图上有一个较严重的bug。
bug产生在任何深入为32位的Bitmap上,因此绘制到LayeredWindow上也有这个问题。
结果如下:
ClearType的文字bug随背景不透明度的增加而改善,如图:
3.有没有注意呢? 迅雷似乎还用了路径文字。
综上,迅雷的新Bolt界面引擎实际情况应该如下:
1.自主进行了透明混合/翻面效果等的计算(MMX & SSE指令集提升计算速度,没有硬件加速)
2.在开启透明时为LayeredWindow,没有开启透明时撤销了WS_EX_LAYERED标志,同时给窗体加上了一个圆角(见上文 A,B)
撤销WS_EX_LAYERED的原因当然是为了加速。3.非Aero下无模糊 (有模糊就要技术了)
即使LayeredWindow不透明,Windows仍然会混合所有的点,这就造成了速度减慢,而混合所占的CPU是算在程序里的。
4.迅雷的文字似乎是用着Gdi+的 (为什么有人称是FreeType?FT不应该成这样啊..)
5.迅雷自绘了所有控件,其中文本框尚有一些选区bug. 不过效率很不错. 扔了1MB数据进去之后换行延迟比TextBox小.
6.界面动画流畅
注意: 半透明下界面的流畅程度与CPU性能和是否支持MMX指令集有直接关系,因为Windows在混合LayeredWindow时是没有硬件加速的(待确认)。而窗口上的每一个改变都必须执行UpdateLayeredWindow API。
于是,迅雷的界面并不是遥不可及的,我们倘若要山寨一个,或许只是代码写得多一点而已,没有任何技术门槛。
代码多在何处? 上述中第1及第5点。
迅雷7应用开发在线文档:
遐想变成现实!Bolt引擎做的俄罗斯方块【开源】
http://yangtai.xunlei.com/?p=2393
2、duilib
http://www.duilib.com/index.html
内首个开源的DirectUI界面库--DuiLib,免费开放是我们的出发点,崇尚完美是我们的动力,共赢互惠是我们追求的目标,年轻活力是我们最大的资本...
DuiLib开发语言为C++,采用纯Win32API,无其他额外依赖;支持图片等资源的压缩,方便携带传播;目前支持的开发平台为vc6-vc10,Demo比较丰富,非常容易上手...(我没用过,这是他们自己介绍的)
3、DirectUI
Microsoft DirectUI Library 微软自家DirectUI开源库 https://github.com/jameskeane/directui |
4、