Как я могу преобразовать шестнадцатеричное значение цвета в его читаемое человеком представление строки?

Я хочу сохранить шестнадцатеричное значение цвета (например, "#FFFF1493") в качестве его "понятного человеку" имени (например, "DeepPink").

С помощью SLaks и nvoigt здесь я получил этот код:

if (sender is Canvas)
{
    var canvas = sender as Canvas;
    var brush = canvas.Background as SolidColorBrush;
    var color = brush.Color;
    String brushColorAsStr = color.ToString();

    IAppSettings appSettings;
    if (App.SaveSettingsLocally)
    {
        appSettings = new AppSettingLocal();
    }
    else
    {
        appSettings = new AppSettingsRemote();
    }
    appSettings.SaveSetting(VisitsConsts.APP_BAR_COLOR_SETTING, brushColorAsStr);
}

... но значение в brushColorAsStr равно "# FFFF1493" (когда я щелкаю элемент управления DeepPink canvas), и это не работает с моим кодом для изменения цвета панели приложения на основе выбранного цвета:

String brushColor = appSettings.GetSetting(VisitsConsts.APP_BAR_COLOR_SETTING);
if (null == brushColor) return;

if (brushColor.Equals("Blue"))
{
    CmdBar.Background = new SolidColorBrush(Colors.Blue);
}
else if (brushColor.Equals("Aqua"))
. . .

Отсюда я получил эти предложения:

Color colour = (Color)ColorConverter.ConvertFromString(brushColorAsStr);
System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml(brushColorAsStr);

... но "ColorConverter" и "Drawing" неразрешимы в моем приложении. Как я могу получить удобочитаемое имя из шестнадцатеричного цвета val?

2 ответа

Решение

Здесь нет сопоставления чисел с именами, но класс Colors сопоставляет имена с числами. Вы можете использовать отражение для построения обратного отображения.

Посмотрите этот предыдущий ответ для примера кода: Как преобразовать Windows.UI.Color в имя цвета строки в приложении Windows Universal

Другие вопросы по тегам