public static float GetSaturation(this Color color)
{
byte minval = (byte)Math.Min(color.R, Math.Min(color.G, color.B));
byte maxval = (byte)Math.Max(color.R, Math.Max(color.G, color.B));
if (maxval == minval)
return 0.0f;
int sum = maxval + minval;
if (sum > 255)
sum = 510 - sum;
return (float)(maxval - minval) / sum;
}