那些流连过的风景,那个长存于心的人,那些一心向往的美好,或是那句曾让人恍然的话语。动人的画面,我们不止想要印在脑海,更希望它们跃然屏幕。当QQ变为生活的一部分,特别的皮肤也可以是记忆的指针,希望的灯塔,点亮心情的阳光。透明皮肤:透一下,心悠扬。

       1. 什么是透明皮肤

透明皮肤,顾名思义就是实现QQ主要窗口皮肤的透明化,使得主面板和会话窗口的可以完全展现皮肤的图像,提升QQ的视觉效果,满足用户个性需求。

       2. 需求背景

       a) 来自70万的用户呼声   

根据后台数据监测(忽略无法监测到版本用户不计)显示,有70万QQ用户使用网友制作的补丁修改QQ配置文件,以实现透明皮肤的美化效果。

       b) 透明皮肤补丁的用户分析

我们对通过70万用户的分析,发现使用透明皮肤补丁的用户主要是网络活跃度高、追求独特个性和渴望表达自我的青少年。他们要么追逐潮流:喜爱装扮、迷恋明星、酷爱自拍;要么有着强烈的自我意识:叛逆、情绪化、特立独行。透明皮肤不仅具有趣味性,更能够彰显个性,表达自己。

       c)    补丁的3大弊端

弊端1:补丁的视觉效果粗糙。网友通过修改配置文件,直接删除了QQ主面板和会话窗口的白色质感层,无法很好满足用户的审美需求,无法提供对白色质感层透明度的性调节。

弊端2:无法适应各种背景。网友制作的补丁只可以全透,不可以调节透明度。当选择的背景颜色偏重时,主面板和会话窗口的文字将无法阅读。

弊端3:使用补丁存在安全隐患,给用户带来潜在的危害。

所以,基于用户需求的考虑,我们实现了这一需求,并在多个方面实现了功能的创新突破。特别是开发技术上,我们巧妙的运用了分层控制的算法,不仅实现了各控件视觉效果的特定优化,并解决了设置极值时出现黑色色带的难题。

3.     技术创新

(图2 分层技术说明)

        a)     分层绘制窗口及各控件

现有QQ各主要窗口是通过背景层、质感层和内容层进行分别绘制。背景层上修改皮肤的图像,质感层透明度的调节决定背景透明效果,而内容层上显示内容的透明度亦可调节。

如果细致考量美化效果,会发现窗口和各控件的透明要求其实并不一致。窗口追求高透效果以实现背景的完全展示;而部分控件,如Tab区需要相对低透,使用户在操时作清晰易辨。

细化到单个控件,各部分的透明变化也不一致,以滚动条为例,前景(滚动条拉杆、按钮)应尽量不透明,用户可辨识;而背景则尽量透明,提升美化效果。

为了追求最佳的透明效果,我们创新地将窗口的质感和各控件的质感分开绘制,为窗口和不同控件设置特定的变化率。使得用户仅需调节一个设置项,便能的任意调节整体透明度,并始终保证窗口和各控件的优化显示。

       b)    分层绘制的逻辑算法

通过修改质感层的Alpha值来实现透明效果的调节,并分开控制窗口及各控件的质感层:在转换过程中增加一个控制参数dbPercent(与透明度变化率成正比),主要窗体采用默认值,特定控件赋予各部分不同数值,使得窗体及各控件实现不同变化率。为突出特殊控件(如滚动条)的显示,我们也对内容层的Alpha参数进行了修改。统一公式为:

realAlpha(真实应用质感透明度) =

255 - ( 255 – MaterialAlpha(全局质感透明度) ) * dbPercent

注:dbPercent默认等于 1

其中,窗口及各控件特定参数设置如下:

窗口/控件

dbPercent (=)

会话窗口主体(aio、会话区、输入区)

默认

主面板主体

默认

会话窗口>小工具栏

0.8

主面板>Tab区前景(icon)

0.3

主面板>Tab区背景

0.5

滚动条前景(拉杆、按钮)

0.08

滚动条背景

0.9

(图3 图示说明)

       c)     RichEdit黑色色带修复算法

RichEdit的TxDraw接口未返回Alpha通道,所以采用三遍绘制的方式确定Alpha通道。但在ClearType开启的情况下,这种方法会无法准确获取Alpha通道,所以会有花屏的状况出现。

为了解决此问题,我们在RichEdit绘制结束后强制用一个画刷,把所有像素点的Alpha通道打成255,此方法的后遗症是当窗口背景较黑的时候,RichEdit部分会较其他控件部分显黑,出现黑色色带。

为追求极致的美化效果,必须克服这个后遗症。于是在窗口质感层之前,增加了一层纯白色的混合层,这层质感层的Alpha计算公式为:

revertAlpha = sqrt(255 * 255 – MaterialAlph * MaterialAlpha)

从而将RichEdit的背景色维持在一个较白的效果,较好修复RichEdit黑色色带。

(图4修复前后效果对比)

        d)    好的算法带来的效果突破

对比网友补本版粗暴地去掉质感层,不仅造成透明程度不可调节,各部分显示不协调,某些区域辨识度低,甚至还出现黑显,美化效果并不理想。由于用户无法对各窗体进行分开调节,盲目地将透明效果推广到各个窗体,反而会影响美观。而如果增加个窗体的分开调节,会大大增加用户的精力成本,降低功能的易用性。所以,我们利用技术上的创新,实现了效果上的突破。效果美化:搜索框的黑显消;Tab区、滚动条、会话窗口等操作区的显示清晰,不影响用户操作。

(图5  网友版透明皮肤)                  (图6  QQ2012beta2 透明皮肤效果)

       4.     操作便捷,一键适配各种背景

虽然为了实现了透明皮肤,我们对技术作了很多的改造,但是呈现出来的东西却是最简单操作:用户仅需调整一个设置项,即可实现上述所说的各部分透明度协调变化。如果用户同时使用毛玻璃效果,将会增加透明皮肤的可玩性。

(图7 QQ2012beta2设置透明皮肤入口)

之所以将透明皮肤设置为可调节透明度的交互设计,是为了可以给用户可以调节白色质感层的控制权利,可以根据不一样的背景,调节到最适合的透明度。

(图8背景颜色较影响文字阅读时将透明度调20%透明)

(图9背景颜色不影响文字阅读时将透明度调100%全透明)

       5.     惊喜发现:用户扩展,潜力无限

透明皮肤其实具有庞大的潜在用户群。上线后,我们发现透明皮肤的用户群其实不止局限于我们预想的青少年群体,已扩展到大量QQ活跃用户中去。根据观察同事们的使用情况,看到摄影发烧友换上了自己的得意之作,已为人父母的家长换上了宝贝的可爱照片。每个人都有追求趣味、美观和个性的客观需求。用户的普遍肯定也更加坚定了团队迎接新挑战的信心。

(图10用户微博反馈)

本文转自腾讯大讲堂(DJT.QQ.COM)

QQ透明皮肤:多层算法,一键适配各种背景 .相关推荐

  1. QQ透明皮肤:多层算法 一键适配各种背景

    那些流连过的风景,那个长存于心的人,那些一心向往的美好,或是那句曾让人恍然的话语.动人的画面,我们不止想要印在脑海,更希望它们跃然屏幕.当QQ变为生活的一部分,特别的皮肤也可以是记忆的指针,希望的灯塔 ...

  2. QQ透明皮肤:多层算法,一键适配各种背景

    那些流连过的风景,那个长存于心的人,那些一心向往的美好,或是那句曾让人恍然的话语.动人的画面,我们不止想要印在脑海,更希望它们跃然屏幕.当QQ变为生活的一部分,特别的皮肤也可以是记忆的指针,希望的灯塔 ...

  3. 碉堡了!体验QQ自带“全透明”皮肤!

    "透明"一直是美化控们的终极目标,网上经常能够看到各种大大们自己制作的QQ全透明皮肤.不过你能想到最新版QQ 2012已经自带全透明皮肤了吗?而且我要告诉你的是,腾讯的这次&quo ...

  4. QQ透明名片在线上传网站源码

    介绍: 最近超流行的QQ透明名片,无需复杂操作,不需要QQ会员,一键就能制作自己的专属名片,超高逼格. 透明名片在线上传网站源码 注意事项 1.名片必须恢复默认  2.图片不能太大,过大可以找个好友发 ...

  5. C# 高仿腾讯QQ (窗口皮肤美化)(附测试源码)

    首写这篇文章之前先跟大家说声抱歉,我很少写这方面的文章,所以一直不敢动手,之前的文章确实不带源的,因为当时只是想做为自己初次开发的记录过程,打算程序开发完后再来贴源的.不过从现在开始,我觉定还是把自己 ...

  6. Delphi皮肤控件分析与QQ的皮肤变色功能

    关于界面美化方面,一直是一个脑壳疼的问题!以前一直偷懒,使用的三方控件!但是在使用了一段时间之后,都或多或少的有些问题!不是我说三方控件如 何如何的不好!只是三方控件多是庞大的一个肢体,要兼顾的用户群 ...

  7. 超科技感的QQ透明立体资料卡PSD源码

    正文: 超科技感的QQ透明立体资料卡PSD源码,我测试了以下可以用的,PSD的源文件,直接用PS打开就可以修改文字了,有兴趣的自行去弄吧. 程序: wwwu.lanzouw.com/iIr5r05hn ...

  8. android 类似QQ 换皮肤 实现思路 apk资源共享

    android 类似QQ 换皮肤 实现思路 apk资源共享 发布:t80t90s | 发布时间: 2013年3月30日 原文:http://t80t90s.com/view.asp?id=23 1.首 ...

  9. 免费QQ空间皮肤代码及使用方法

    免费QQ空间皮肤代码: 免费QQ空间蓝色520代码 javascript:window.top.space_addItem(1,7976,0,80,0,0,90); 空间免费皮肤代码:黑色FLASH相 ...

最新文章

  1. matlab最小二乘法参数辨识,基于最小二乘法的MATLAB辨识仿真实验
  2. make_ext4fs 失败
  3. 操作系统实验——简易FAT16文件系统的实现
  4. linux 无线网卡 延时 丢包 模拟,Linux模拟网络丢包与延迟的方法
  5. testflight进行用户的beta测试
  6. (59)Verilog HDL测试激励:时钟激励1
  7. Android5.0以下 源码分析Notification的notify
  8. 恒星演化 —— 恒星的一生
  9. windowsf进程管理器中进程解释
  10. paip.HTML文本框INPUT无法输入的解决
  11. wincc几个常用c语言编程软件,WINCC几个常用C语言编程
  12. 【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
  13. Liunx安装Tomcat
  14. SaltStack数据系统
  15. 区块链的未来:“2020年起3-5年:国内区块链大规模商业应用将全面落地开花”
  16. Cisco Packet Tracer汉化处理
  17. py: pip3老,导致安装 flask avatar 依赖的 pillow 安装不上
  18. web学习-html(2)
  19. 加速乐cookie爬虫
  20. HTML链接跳转与vue链接跳转

热门文章

  1. 仅剩100份!百格活动《会议技能地图》2019会议行业硬核之作
  2. ads操作(1)——关于ads版图的导出和设计
  3. 制作多重启动光盘——启动易(EasyBoo…
  4. GPRS对比CDMA
  5. 花血本,不代表着花钱,谈谈我玩信用卡的那些事儿
  6. 台式机1080ti最低多少起_GTX1080Ti显卡对电源功率有要求吗?GTX1080Ti显卡应该配多大功率电源才够用?...
  7. 日本人是这样做游戏的!
  8. 数字输入框input< type=“number“ />隐藏后面的按钮
  9. 苹果logo设计背后的故事
  10. 淘宝官方商品API对接