如何让托盘进行闪烁,类似于QQ的效果

解决方案 »

  1.   

    实际上是2个图标,然后用个timer让它不停的换
    可以试试用gif可以不
      

  2.   

    zhangci226(三只熊熊) ( ) 信誉:99  2006-07-03 15:16:00  得分: 0  
     
     
       实际上是2个图标,然后用个timer让它不停的换
    可以试试用gif可以不
      
     agree
      

  3.   

    不可能用gif,在系统托盘中显示的是icon,闪烁的原因是icon进行切换造成。你自己用timer或者其他之类的,去定时修改notifyicon的图标即可。
      

  4.   

    是的,我在写消息提醒的时候,就是用几对不同的ICON实现各种提示的用Timer
      

  5.   

    用几个图标代的,可以加一个timer处理
      

  6.   

    using System.Runtime.InteropServices;
    public partial class Form1 : Form
    {
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            static extern bool FlashWindow(IntPtr hwnd, bool bInvert);
           
            private void timer1_Tick(object sender, EventArgs e)
            {
                FlashWindow(Handle, true);
            }        private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Interval = 5000;
                timer1.Start();        }
    }
      

  7.   

    用timer就可以了
    楼上正解
      

  8.   

    是两个ICON ,用 TIMER 来控制。
      

  9.   

    private Icon m_Icon1;
    private Icon m_Icon2;
    private bool m_bFlag;
    private bool m_bShowWnd;修改Form1()函数为:public Form1()
    {
    //
    // Required for Windows Form Designer support
    //
    InitializeComponent();
    //
    // TODO: Add any constructor code after InitializeComponent call
    //
    m_bFlag=true;
    m_bShowWnd=true;try
    {
    m_Icon1 = new Icon("Icon1.ico");//导入图标文件
    m_Icon2 = new Icon("Icon2.ico");
    }
    catch ( Exception e )
    {
    MessageBox.Show("Error " + e.Message,"Animate Tray - Error");
    menuItem2.Enabled = false;
    menuItem3.Enabled = false;
    }
    }添加menuItem1、menuItem2、menuItem3、m_trayIcon的Click事件,消息处理函数如下:
    private void menuItem1_Click(object sender, System.EventArgs e)
    {
    timer1.Start();//打开计时器
    }private void menuItem2_Click(object sender, System.EventArgs e)
    {
    timer1.Stop();//停止计时器
    }private void menuItem3_Click(object sender, System.EventArgs e)
    {
    Application.Exit();//退出应用程序
    }private void m_trayIcon_Click(object sender, System.EventArgs e)
    {
    if(m_bShowWnd == true)//隐藏主界面
    {
    this.Visible = false;
    m_bShowWnd = false;
    }
    else//显示主界面
    {
    this.Visible = true;
    m_bShowWnd = true;
    }
    }
    最后还要添加timer1的Tick()函数:private void timer1_Tick(object sender, System.EventArgs e)
    {
    if ( m_Icon1 != null && m_Icon2 != null ) //如果两个图标文件都被正确载入
    {
    //只要timer1被启动,则在两个图标之间不断进行选择变换,实现动画效果
    if ( m_bFlag == true )
    {
    m_trayIcon.Icon = m_Icon2;
    m_bFlag = false;
    }
    else
    {
    m_trayIcon.Icon = m_Icon1;
    m_bFlag = true;
    }
    }
    }
      

  10.   

    实际上是2个icon在timer事件里不停的换if(this.notifyIcon1.Icon!=ico)
    {
    this.notifyIcon1.Icon=ico1;
    }
    else
    {

    this.notifyIcon1.Icon = ico;
    }这里ico和ico1分别是2个不同图标
      

  11.   

    是啊,timer控制的两个图标〉。。
      

  12.   

    这不是很容易么,切换就行,gif也行,还可以做一个左右摇摆的图形也行,怎地都行。
      

  13.   

    不可能用gif,在系统托盘中显示的是icon,闪烁的原因是icon进行切换造成。你自己用timer或者其他之类的,去定时修改notifyicon的图标即可。
      

  14.   

    另一种思路
    可以用visible设置闪烁的效果
    在timer1_Tick下
    if (this.notifyIcon1.Visible)
                {
                    this.notifyIcon1.Visible = false;
                }
                else
                {
                    this.notifyIcon1.Visible = true;
                }
      

  15.   

    如果不想自己写。去www.codeproject.com找别人写的控件,可以做到。