热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

先把最近看到的一些收录一下,以后慢慢更新:1、迅雷7的Bolt界面引擎(摘一段别人写的)以下内容仅针对界面引擎。迅雷从5越到了7(其实6是存在的);迅雷7的一个显著改善是UI(Us

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

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、


推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文讨论了在使用Timer控件和键盘触发时可能出现的冲突问题,并提供了解决方法。同时还介绍了如何实现一个类似QQ的小图标只出现在右下角而不在状态栏的程序。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
author-avatar
holy190
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有