using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace DRG.DRGInterfaceClient { /// 系统托盘封装:最小化收起、双击还原、右键菜单。自定义绘制 DRG 圆形图标。 internal class TrayIcon { public NotifyIcon Icon { get; private set; } private MainForm _form; public TrayIcon(MainForm form) { _form = form; Icon = new NotifyIcon { Icon = BuildIcon(), Visible = true, Text = "DRG 接口客户端" }; var menu = new ContextMenuStrip(); var open = new ToolStripMenuItem("打开主界面"); open.Click += (s, e) => _form.ShowMain(); var sync = new ToolStripMenuItem("立即执行一次"); sync.Click += (s, e) => _ = _form.DoSyncAsync(); var log = new ToolStripMenuItem("打开日志"); log.Click += (s, e) => Logger.OpenLogFile(); var exit = new ToolStripMenuItem("退出"); exit.Click += (s, e) => _form.ExitApp(); menu.Items.AddRange(new ToolStripItem[] { open, sync, log, exit }); Icon.ContextMenuStrip = menu; Icon.DoubleClick += (s, e) => _form.ShowMain(); } /// 运行时绘制一个蓝色圆形 + 白色 "DRG" 文字图标(避免依赖外部 .ico 文件)。 private static Icon BuildIcon() { try { var bmp = new Bitmap(32, 32); using (var g = Graphics.FromImage(bmp)) { g.SmoothingMode = SmoothingMode.AntiAlias; g.Clear(Color.Transparent); using (var brush = new SolidBrush(Color.FromArgb(0x1E, 0x88, 0xE5))) g.FillEllipse(brush, 2, 2, 28, 28); using (var font = new Font("Microsoft YaHei", 11, FontStyle.Bold)) using (var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }) using (var brushW = new SolidBrush(Color.White)) g.DrawString("DRG", font, brushW, new RectangleF(0, 0, 32, 32), sf); } return System.Drawing.Icon.FromHandle(bmp.GetHicon()); } catch { return SystemIcons.Application; } } public void ShowBalloon(string text) { try { Icon.ShowBalloonTip(3000, "DRG 接口客户端", text, ToolTipIcon.Info); } catch { } } public void Dispose() { Icon.Visible = false; Icon.Dispose(); } } }