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

227
07 июля 2017, 03:22

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

Answer 1

Немного погуглив я наткнулся на вот этот код:

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; 
}
READ ALSO
Сворачивание приложения в трей

Сворачивание приложения в трей

Допустим есть программа которая фоном делает определенные операции, не важно какие, допустим каждые 10 секунд собирает информацию по нагрузке...

243
WCF переделать helpPage

WCF переделать helpPage

Всем привет! Суть вопроса: имеется проект WebApi к которому позднее была добавлена WCFУ webApi есть встроеный механизм HelpPage, достаточно удобный,...

241
Плагин по управлению яркости экрана в Unity на платформе Android

Плагин по управлению яркости экрана в Unity на платформе Android

У меня есть java-код по управлению яркостью экрана, который отлично работает в Android Studio

243