Страницы

Поиск по вопросам

вторник, 20 ноября 2018 г.

Конвертирование Color в ConsoleColor

Здравствуйте, пишу программу которая получает фотографию, и рисует ее на консоли, но поскольку приложение консольное, а как вы знаете что нельзя использовать Bitmap в консоли пришлось создать формочку. Все работает но когда дело доходит до вывода на консоль, то я получаю цвет пикселя в формате Color, а для изменения цвета консоли нужна ConsoleColor. Прошу помочь переконвертировать Color в ConsoleColor, спасибо!


Ответ

Немного погуглив я наткнулся на вот этот код:
Color BEGIN_COLOR = Color.Red; ConsoleColor END_COLOR = ClosestConsoleColor(BEGIN_COLOR.R, BEGIN_COLOR.G, BEGIN_COLOR.B);
public static ConsoleColor ConvertColor(byte r, byte g, byte b) { ConsoleColor ret = 0; double rr = r, gg = g, bb = b, delta = double.MaxValue;
foreach (ConsoleColor cc in Enum.GetValues(typeof(ConsoleColor))) { var n = Enum.GetName(typeof(ConsoleColor), cc); var c = System.Drawing.Color.FromName(n == "DarkYellow" ? "Orange" : n); var t = Math.Pow(c.R - rr, 2.0) + Math.Pow(c.G - gg, 2.0) + Math.Pow(c.B - bb, 2.0); if (t == 0.0) return cc; if (t < delta) { delta = t; ret = cc; } } return ret; }

Комментариев нет:

Отправить комментарий