最近在做一个即时通信的软件,功能和界面上都模拟QQ、MSN等。相信这些软件用户交互界面可以获得较好的用户体验。软件的功能要强大,但是界面也同样重要。
        网上查了一些资料,很多提问关于QQ好友上线头像闪动是怎样实现的?
        前边说到是模拟,就是说我们还没有能力像qq那样自己编写控件,网上很多人讲了解决的方法。不过原理都是很相似的,仔细看一下qq接受到消息的时候。头像的跳动轨迹----左下-->中上-->右下-->中上  三个状态循环。中间的间隔时间大约在300~500ms.(大约估计的)。很多人讲可以用一个gif图片来替换。这个方法是很简单,虽软编成是简单了,可以那么多头像都要给它们做一个gif的副本?要是程序支持自定义头像,显然是走了弯路了。看看QQ文件夹下的NEWFAC文件夹,也是只有单个头像,没有GIF副本。虽然我们不知道QQ是怎样做到的(应该是自己写的控件,可能继承自TreeView之类的),那些就不关心了。既然要模仿的是效果看下面的截图
                                                      
实现代码:

 1  private   void  creatNewImage()
 2          {
 3              Control.CheckForIllegalCrossThreadCalls  =   false ;
 4               // 跨线程调用,.NET Framework 2.0会出现这个问题,可以在创建控件的基础句柄所在线程上异步执行指定委托
 5               // 这里为了演示一下效果,所以没有采用那种方式
 6              Bitmap bmp  =   new  Bitmap( 22 , 20 ); // 大小视情况而定,不要影响到界面其他地方
 7              Graphics gph;
 8               // 从指定的Image对象创建新Graphics对象
 9              gph  =  Graphics.FromImage(bmp);
10              Bitmap mybit  =   new  Bitmap(buttonItem2.Image);
11              Bitmap bit2  =   new  Bitmap(buttonItem1.Image);
12               while  ( true )
13              {
14                  gph.Clear(Color.White);
15                  gph.DrawImage(mybit,  0 ,  1 ,  20 ,  20 );
16                  buttonItem2.Image  =  bmp; // 接受到消息,头像跳动
17                  buttonItem1.Image  =  mybit; // 这个是部门分组前边,好友头像的闪动提示
18                  Thread.Sleep( 300 );
19 
20                  gph.Clear(Color.White);
21                  gph.DrawImage(mybit,  1 ,  0 ,  20 ,  20 );
22                  buttonItem2.Image  =  bmp;
23                  Thread.Sleep( 300 );
24 
25                  gph.Clear(Color.White);
26                  gph.DrawImage(mybit,  2 ,  1 ,  20 ,  20 );
27                  buttonItem2.Image  =  bmp;
28                  buttonItem1.Image  =  bit2;
29                  Thread.Sleep( 300 );
30 
31                  gph.Clear(Color.White);
32                  gph.DrawImage(mybit,  1 ,  0 ,  20 ,  20 );
33                  buttonItem2.Image  =  bmp;
34                  Thread.Sleep( 300 );
35 
36              }

通过在内存中的Bitmap的绘制(图像按照左下、中上、右下的方向平移绘制),然后按照时间间隔替换好友Item上的Image。可以达到QQ好友上线的头像跳动,然后在系统托盘上也显示类似的闪动。
         当收到服务器转发过来的消息的时候启动一个以这个方法入口的线程,可以显示头像提示,当然加入滴、滴、滴的提示声音就更生动了。鼠标点击后,弹出聊天窗口。终止线程。为了实现头像闪动的效果,我是这样想的,如果各位还有好的方法,不妨交流一下。
        我用的空间是DotNetBar中ItemPanel控件,实现分组的,折叠。因为准备做一个漂亮的界面效果。所以用了第三方的控件。估计vs2005中的TreeView也可以的。嘿嘿好友类表还是用tree好一点,不过在DotNetBar中没有找到那个控件。

模拟QQ好友上线头像闪动效果相关推荐

  1. 模拟QQ上线头像闪动效果

    最近在做一个即时通信的软件,功能和界面上都模拟QQ.MSN等.相信这些软件用户交互界面可以获得较好的用户体验.软件的功能要强大,但是界面也同样重要.          网上查了一些资料,很多提问关于Q ...

  2. iOS之仿QQ好友列表展开收缩效果的实现

    使用UICollectionView实现 思路 很明显整体它是一个列表,它的分组是一个列表,它里面的好友列表也是一个列表,所以就可以使用组头来设置分组列表,使用cell设置好友列表: 当点击组头的时候 ...

  3. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果

    本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...

  4. QQ好友自定义头像不更新的解决办法(转)

    QQ好友自定义头像不更新的解决办法(转) 最近常有好友问QQ上的好友改了自定义头像后怎么更新不了.今天,笔者也遇到了同样的情况,在改了自定义头像后,好友列表中的自己的图像就是不能自动更新且更新好友资料 ...

  5. 乌鸦QQ好友上线通知 v1.0

    现在的QQ2009版本已经取消了特定QQ好友上线提示,如果要关注好友要开通千里眼. 如果是开通所有好友上线提示的话,进入QQ系统设置-状态和提醒-消息提醒-好友上线提醒 所以我做了下面这个软件,原理也 ...

  6. 仿QQ好友列表分组折叠效果

    最近要一个类似QQ好友列表分组折叠效果,经过网友提醒应该使用ExpandableListView,因为其就集成了这个功能,我到网上随便找了文章一看,果然如此,因为工作需要和兴趣的推动,下班做完事后决定 ...

  7. qq好友列表获取数据并导出 - 用curl类 模拟QQ好友列表获取

    qq好友列表获取数据并导出 - 用cur类l 模拟QQ好友列表获取 这里我们利用curl类去实现这个功能. 代码如下: //模拟浏览器查找好友列表 $url = "http://cgi.fi ...

  8. 关闭QQ好友上线提醒终极方案-(2016年4月20日)

    进入qq系统设置,选择提醒,这里如果选择关闭好友上线提醒,其实是无效的,算是bug吗? 正确的方法应该是,选择声音,设置提示音,里面有一个好友上线选项,后面是试听,后面是状态,你的应该是开启状态吧,点 ...

  9. java qq好友上线 好友面板更新如何实现_Java实现类MSN、QQ好友上线通知界面

    // Test.java //主界面,其中只有一个button,当点击时调用Popup在右下角显示像MSN和QQ一样的popup界面. import org.eclipse.swt.SWT; impo ...

最新文章

  1. WebStorm中SVN配置
  2. 华为机考HJ2计算字符个数
  3. IT旅途——程序员面试经验分享
  4. svm 的提前处理
  5. 从默认的 _id 字段中,取得时间信息
  6. JS获取屏幕浏览器网页高度和宽度属性
  7. HTML_DOM的node屬性
  8. 51单片机c语言教程温度计,单片机课程设计-数字温度计.doc
  9. Python中的数据遍历操作
  10. Serverless 是一种思想状态
  11. git代码比较,没有差异却显示出来
  12. 360全景倒车影像怎么看_最近淘了一个360度全景倒车影像-4路行车记录仪监控录像,和大家分享一下...
  13. [教程]配置青鸟云Web服务器
  14. Integer类型的比较
  15. 库存转换是什么意思_什么是库存?
  16. 抖音主页如何添加官网链接
  17. (六)高德地图之驾车路线规划
  18. StormMedia: 一个关于暴风影音的文件夹
  19. 微服务系统错误码设计
  20. 机器学习(Machine-Learning)----概述

热门文章

  1. SMS短信发送/接收模块
  2. 全面评测安全企业邮箱加密服务,推荐高性价比提供商
  3. PhotonOS入门
  4. 手机余额查询(限制重庆)
  5. python 添加图片_python怎么导入图片?
  6. mysql统计出每个姓氏的人数_MySQL 50题练习
  7. 杭州电子地图 高清15、17、19级别 谷歌电子地图资源
  8. java 数据聚合_聚合java
  9. 元旦给计算机老师的贺卡,2020跨年元旦给老师的祝福语 最新元旦贺卡祝福合集...
  10. 算法训练Day11 | LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)