• 最新的一些在c或winapi下做界面的库


    先把最近看到的一些收录一下,以后慢慢更新:

    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的原因当然是为了加速。
    即使LayeredWindow不透明,Windows仍然会混合所有的点,这就造成了速度减慢,而混合所占的CPU是算在程序里的。
    3.非Aero下无模糊 (有模糊就要技术了)
    4.迅雷的文字似乎是用着Gdi+的 (为什么有人称是FreeType?FT不应该成这样啊..)
    5.迅雷自绘了所有控件,其中文本框尚有一些选区bug. 不过效率很不错. 扔了1MB数据进去之后换行延迟比TextBox小.
    6.界面动画流畅
    注意: 半透明下界面的流畅程度与CPU性能和是否支持MMX指令集有直接关系,因为Windows在混合LayeredWindow时是没有硬件加速的(待确认)。而窗口上的每一个改变都必须执行UpdateLayeredWindow API。

    于是,迅雷的界面并不是遥不可及的,我们倘若要山寨一个,或许只是代码写得多一点而已没有任何技术门槛
    代码多在何处? 上述中第1及第5点。

    迅雷7应用开发在线文档:

    http://xldoc.xl7.xunlei.com/

    遐想变成现实!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、

  • 相关阅读:
    利用 ImageAI 在 COCO 上学习目标检测
    pip 安装包提速
    opencv 学习资料
    Win10 小技巧
    tqdm:Python 进度条
    自制 COCO api 直接读取类 COCO 的标注数据的压缩文件
    线性回归模型的 MXNet 与 TensorFlow 实现
    cv2 与 matplotlib 的 Bug 记录
    pyinstaller 打包错误集锦
    python函数的进阶
  • 原文地址:https://www.cnblogs.com/swordzj/p/2196247.html
Copyright © 2020-2023  润新知