internal Color GetPercentageColor(double pct, double max = 100, double min = 0) { pct = pct / 100; max = max / 100; min = min / 100; double red = 0; double green = 0; double blue = 0; if (pct > max) { return(Color.FromRgb(Convert.ToByte(0), Convert.ToByte(255), Convert.ToByte(0))); } if (pct < min) { return(Color.FromRgb(Convert.ToByte(255), Convert.ToByte(0), Convert.ToByte(0))); } double median = min + ((max - min) / 2); double modifier = (pct - min) / (max - min); if (pct >= median) { red = (1 - modifier) * 2 * 255; green = 255; } else { red = 255; green = modifier * 2 * 255; } return(Color.FromRgb(Convert.ToByte(red), Convert.ToByte(green), Convert.ToByte(blue))); }