feat: add programmatic tray icon generation (green/yellow/red)
This commit is contained in:
28
src/SpamGuard/Tray/IconGenerator.cs
Normal file
28
src/SpamGuard/Tray/IconGenerator.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
namespace SpamGuard.Tray;
|
||||||
|
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
|
||||||
|
public static class IconGenerator
|
||||||
|
{
|
||||||
|
public static Icon CreateCircleIcon(Color color, int size = 16)
|
||||||
|
{
|
||||||
|
using var bitmap = new Bitmap(size, size);
|
||||||
|
using var graphics = Graphics.FromImage(bitmap);
|
||||||
|
graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
graphics.Clear(Color.Transparent);
|
||||||
|
|
||||||
|
using var brush = new SolidBrush(color);
|
||||||
|
graphics.FillEllipse(brush, 1, 1, size - 2, size - 2);
|
||||||
|
|
||||||
|
// Add a subtle border
|
||||||
|
using var pen = new Pen(Color.FromArgb(100, 0, 0, 0), 1);
|
||||||
|
graphics.DrawEllipse(pen, 1, 1, size - 3, size - 3);
|
||||||
|
|
||||||
|
return Icon.FromHandle(bitmap.GetHicon());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Icon Green => CreateCircleIcon(Color.FromArgb(76, 175, 80));
|
||||||
|
public static Icon Yellow => CreateCircleIcon(Color.FromArgb(255, 193, 7));
|
||||||
|
public static Icon Red => CreateCircleIcon(Color.FromArgb(244, 67, 54));
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user