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


      上次写了一篇博文,但是每次更新图标时,桌面会闪烁(刷新),有博友说人家的图标都不会刷新,还能动画.我想了一下,如果要达到这个效果,可以用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 AOPDemo
    11 {
    12     public partial class AppIconMsg : Form
    13     {
    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 screen
    33         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 form
    38             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             //drag
    55             if (m.Msg == WM_NCHITTEST)
    56                 m.Result = new IntPtr(HTCAPTION);
    57             else
    58                 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 area
    69         const int WM_NCLBUTTONDBLCLK = 0x00A3;//non-client area
    70         private void toolStripExit_Click(object sender, EventArgs e)
    71         {
    72             this.Close();
    73         }
    74 
    75     }
    76 }

  • 相关阅读:
    利用Connect By构造数列
    Linux学习4——Vim和Bash
    Linux学习3——磁盘文件管理系统与压缩和打包操作
    Linux学习2——文件与目录
    Linux学习1——首次登录
    Linux系统的简介及Linux系统的安装
    Windows系统的安装
    5月份的技术总结
    计算机网络基本概念
    软件测试基础概念摘要
  • 原文地址:https://www.cnblogs.com/isaboy/p/CSharp_app_dynamic_icon.html
Copyright © 2020-2023  润新知