private Bitmap getTrayIconByState(Bitmap originIcon, bool enabled, bool global)
{
Bitmap iconCopy = new Bitmap(originIcon);
for (int x = 0; x < iconCopy.Width; x++)
{
for (int y = 0; y < iconCopy.Height; y++)
{
Color color = originIcon.GetPixel(x, y);
if (color.A != 0)
{
if (!enabled)
{
Color flyBlue = Color.FromArgb(192, 192, 192);
// Multiply with flyBlue
int red = color.R * flyBlue.R / 255;
int green = color.G * flyBlue.G / 255;
int blue = color.B * flyBlue.B / 255;
iconCopy.SetPixel(x, y, Color.FromArgb(color.A, red, green, blue));
}
else if (global)
{
Color flyBlue = Color.FromArgb(25, 125, 191);
// Multiply with flyBlue
int red = color.R * flyBlue.R / 255;
int green = color.G * flyBlue.G / 255;
int blue = color.B * flyBlue.B / 255;
iconCopy.SetPixel(x, y, Color.FromArgb(color.A, red, green, blue));
}
}
else
{
iconCopy.SetPixel(x, y, Color.FromArgb(color.A, color.R, color.G, color.B));
}
}
}
return iconCopy;
}