示例#1
0
        public static ConsoleColor GetClosestConsoleColor(Color color)
        {
            Vector3 hls = ToolBox.RgbToHLS(color.ToVector3());

            if (hls.Z < 0.5)
            {
                // we have a grayish color
                switch ((int)(hls.Y * 3.5))
                {
                case 0: return(ConsoleColor.Black);

                case 1: return(ConsoleColor.DarkGray);

                case 2: return(ConsoleColor.Gray);

                default: return(ConsoleColor.White);
                }
            }
            int hue = (int)Math.Round(hls.X / 60, MidpointRounding.AwayFromZero);

            if (hls.Y < 0.4)
            {
                // dark color
                switch (hue)
                {
                case 1: return(ConsoleColor.DarkYellow);

                case 2: return(ConsoleColor.DarkGreen);

                case 3: return(ConsoleColor.DarkCyan);

                case 4: return(ConsoleColor.DarkBlue);

                case 5: return(ConsoleColor.DarkMagenta);

                default: return(ConsoleColor.DarkRed);
                }
            }
            // bright color
            switch (hue)
            {
            case 1: return(ConsoleColor.Yellow);

            case 2: return(ConsoleColor.Green);

            case 3: return(ConsoleColor.Cyan);

            case 4: return(ConsoleColor.Blue);

            case 5: return(ConsoleColor.Magenta);

            default: return(ConsoleColor.Red);
            }
        }