首页 > 学院 > 开发设计 > 正文

C#如何实现带消息数的App图标

2019-11-14 13:41:37
字体:
来源:转载
供稿:网友

  上次写了一篇博文,但是每次更新图标时,桌面会闪烁(刷新),有博友说人家的图标都不会刷新,还能动画.我想了一下,如果要达到这个效果,可以用Form来实现,就是在Form中嵌入一个图片,然后用一个label来动态显示消息数,关键是将Form的边框隐藏,背景设为透明即可.如果要有旋转或者缩放动画,都可以用C#来实现.

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AOPDemo11 {12     public partial class AppIconMsg : Form13     {14         public AppIconMsg()15         {16             InitializeComponent();17             //设置背景为透明18             this.BackColor = Color.FromArgb(116, 164, 2);19             this.TransparencyKey = this.BackColor;  20             21         }22 23         PRivate void AppIconMsg_Load(object sender, EventArgs e)24         {25             this.Width = 64;26             this.Height = 64;27             this.label1.Text = "99";28             this.timer1.Enabled = true;29             30         }31 32         // Drag it around the screen33         private const int WM_NCHITTEST = 0x84;34         private const int HTCAPTION = 0x2;35         protected override void WndProc(ref Message m)36         {37             //Disable mouseDoubleClick on form38             if (m.Msg == WM_LBUTTONDBLCLK)39             {40                 Form2 frm = new Form2(msg);41                 frm.Show();42                 //this.Close();43                 return;44             }45 46             if (m.Msg == WM_NCLBUTTONDBLCLK)47             {48                 Form2 frm = new Form2(msg);49                 frm.Show();50                // this.Close();51                 return;52             }53 54             //drag55             if (m.Msg == WM_NCHITTEST)56                 m.Result = new IntPtr(HTCAPTION);57             else58                 base.WndProc(ref m);59         }60         private int msg = 0;61         private void timer1_Tick(object sender, EventArgs e)62         {63             int num = new Random().Next(1, 100);64             msg = num;65             this.label1.Text = num.ToString();66         }67 68         const int WM_LBUTTONDBLCLK = 0x0203;//client area69         const int WM_NCLBUTTONDBLCLK = 0x00A3;//non-client area70         private void toolStripExit_Click(object sender, EventArgs e)71         {72             this.Close();73         }74 75     }76 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表