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