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

  那些流连过的风景,那个长存于心的人,那些一心向往的美好,或是那句曾让人恍然的话语。动人的画面,我们不止想要印在脑海,更希望它们跃然屏幕。当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用户微博反馈)

  文章来源:腾讯大讲堂

时间: 2024-10-03 23:23:09

QQ透明皮肤:多层算法 一键适配各种背景的相关文章

QQ透明皮肤所做的更像是一种改观

看着透明的物质,最后得到的也只有它背后的东西.QQ透明皮肤,http://www.aliyun.com/zixun/aggregation/7522.html">就是让人忘却曾经有的一切,透过玻璃一样的画面,看透熟悉的本质. 一种效果,可以呈现曾经不可知的一切,而QQ透明皮肤所做的更像是一种改观,从过去不曾注视的一切,到现在赤裸裸的呈现在面前,这种改观,简单却又有效的完善着我们的生活. 经济,每个人都注视的名词.这个词有着非比寻常的力量,人为了它活着,也靠着它活着.而在这个稳定到毫无生机的

qq音乐2015怎么设置透明皮肤

  第一步:请亲们确保你的QQ音乐是最新版本的,如果不是最新版,会有很多不能做到的地方哦! 第二步: 下载qq音乐透明皮肤 第三步:解压 把这个文件解压到你QQ音乐的文件夹里面有个QQMusicSkin的文件夹里面. 第四步: 这一切的工作都要在QQ音乐关闭下进行,如果没有会有点麻烦哦. 然后打开QQ音乐,打开设置--高级设置--皮肤和颜色-- 然后选择qq音乐透明皮肤补丁文件,最后确实即可.

qq音乐2015透明皮肤怎么设置

注意在把透明皮肤放到QQ音乐目录下之前我们需要把QQ音乐给关闭掉了,只有关闭才可以的哦. 我们在电脑中找到你自己的 QQ音乐 安装目录了,在安装目录中会有一个 QQMusicSkin的文件夹里面 如下图所示打开点击进入. 然后打开QQ音乐,打开设置--高级设置--皮肤和颜色-- 好了这样我们就可以把自己刚才放进一的透明皮肤设置成QQ音乐的皮肤了

酷狗怎么弄透明皮肤?

  一.首先打开你的酷狗,打开之后,然后点击右上角的最小化左边的主菜单按钮,点击之后,会弹出一个对话框,然后在对话框中选择"皮肤和窗口调整",如图所示: 二.现在弹出了"皮肤和窗口调整"上就有很多酷狗自带的背景图片,然后还可以在上面调整颜色,当然调整透明皮肤的话,就是在最下方就有个调整透明度的滑块,通过移动滑块即可调整透明度.如图所示:

QQ输入法皮肤UI设计教程

皮肤名称:一锅汤 作者:Sheen 皮肤说明:美味的汤是中华美食的特色食品之一.此皮肤根据一锅汤的外形联想而设计,枸杞.冬菇.汤匙.叶子分别对应着中/英文标点.全角/半角.打开工具箱以及用户登录四个按钮,左上方的红色按钮是中英文输入法的切换. 皮肤全属原创,希望大家喜欢. 以上是这个皮肤的简短描述,附上地址 http://skin.py.qq.com/fcgi-bin/showdetail?skinid=4293197210 关于这个皮肤设计,主要是为了参与近期举行的QQ拼音皮肤全民大赛.要不是

怎么把人生日历锁定在桌面 设置为透明皮肤

人生日历是小编最近都在使用的桌面软件,个人觉得它功能很强大.人生日历集云记事.生日提醒.定时关机.整点报时.切换壁纸等日常生活必备功能外,还能够看电影.订购火车.飞机票等,这些功能都是生活上经常需要用到的功能.小编今天给大家分享一个人生日历的小技巧! 人生日历怎么固定在桌面: 人生日历是一款桌面工具,用过的人都知道,人生日历默认是自动隐藏在桌面的,那么怎么把他固定在桌面呢,小编来告诉你吧! 1.运行人生日历 在桌面上双击人生日历图标即可. 2.锁定方法 运行后很容易发现,当你没有在人生日历上进行

皮肤检测算法三种,示例与代码

今天是地球日,就选了张相关主题的图像做测试   第一种:RGB color space 第二种:RG color space 第三种:Ycrcb之cr分量+otsu阈值化   还有别的一些模型,效果不太好就不贴了   1.rgb model [cpp] view plaincopy // skin region location using rgb limitation   void SkinRGB(IplImage* rgb,IplImage* _dst)   {       assert(r

QQ输入法皮肤如何更换?

QQ输入法皮肤如何更换?   1.从官网下载QQ拼音输入法,在这里建议大家最好使用最新版本因为最新版本修改了不好以往版本的,所以使用起来用户体验会比较好一些. 2.百度搜索QQ输入发皮肤,搜索之后加入QQ拼音输入法的皮肤库里面去,然后选择一个你喜欢的分类进入. 3.选中之后选择一个你喜欢的皮肤,最好选后面评分星级高一点的,使用起来的话也会比较好. 4.点击皮肤上面的下载按钮就可以下载了. 搜狗五笔输入法教程 光速输入法教程 百度输入法教程

QQ怎么换皮肤 QQ换皮肤图文教程

给各位QQ软件的用户们来详细的解析分享一下QQ换皮肤的图文教程. 教程分享: 步骤一:首先先点击QQ主界面上面的衣服的按钮.   步骤二:然后我们可以选择你喜欢的皮肤, 如果想要自定义皮肤就点击右下角的 自定义的按钮.   步骤三:然后在调整皮肤的尺寸 , 位置点击确定即可上传自定义皮肤了. 如果是更换资料卡皮肤, 点击进入自己的资料卡. 然后点击右上角的资料卡皮肤设置.   然后在选择你喜欢的资料卡皮肤即可.还可把资料卡的皮肤应用到QQ皮肤.   好了,以上的信息就是小编给各位QQ的这一款软件