Skip to content

Instantly share code, notes, and snippets.

@ForeverZer0
Created September 1, 2018 00:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ForeverZer0/ccd2f9c683d3a2d0be8b040705e38daf to your computer and use it in GitHub Desktop.
Save ForeverZer0/ccd2f9c683d3a2d0be8b040705e38daf to your computer and use it in GitHub Desktop.
Provides conversion to/from System.Drawing.Color and System.ConsoleColor.
using System;
using System.Drawing;
namespace MyNamespace
{
public static class Extensions
{
public static Color ToColor(this ConsoleColor color)
{
switch (color)
{
case ConsoleColor.Black: return Color.FromArgb(0x000000);
case ConsoleColor.DarkBlue: return Color.FromArgb(0x000080);
case ConsoleColor.DarkGreen: return Color.FromArgb(0x008000);
case ConsoleColor.DarkCyan: return Color.FromArgb(0x008080);
case ConsoleColor.DarkRed: return Color.FromArgb(0x800000);
case ConsoleColor.DarkMagenta: return Color.FromArgb(0x800080);
case ConsoleColor.DarkYellow: return Color.FromArgb(0x808000);
case ConsoleColor.Gray: return Color.FromArgb(0xC0C0C0);
case ConsoleColor.DarkGray: return Color.FromArgb(0x808080);
case ConsoleColor.Blue: return Color.FromArgb(0x0000FF);
case ConsoleColor.Green: return Color.FromArgb(0x00FF00);
case ConsoleColor.Cyan: return Color.FromArgb(0x00FFFF);
case ConsoleColor.Red: return Color.FromArgb(0xFF0000);
case ConsoleColor.Magenta: return Color.FromArgb(0xFF00FF);
case ConsoleColor.Yellow: return Color.FromArgb(0xFFFF00);
case ConsoleColor.White: return Color.FromArgb(0xFFFFFF);
default:
return Color.White;
}
}
public static ConsoleColor ToConsoleColor(this Color color)
{
if (color.GetSaturation() < 0.5)
switch ((int) (color.GetBrightness() * 3.5))
{
case 0: return ConsoleColor.Black;
case 1: return ConsoleColor.DarkGray;
case 2: return ConsoleColor.Gray;
default: return ConsoleColor.White;
}
var hue = (int) Math.Round(color.GetHue() / 60, MidpointRounding.AwayFromZero);
if (color.GetBrightness() < 0.4)
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;
}
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;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment