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();
}
}
}