Получить имя цвета с помощью кисти заливки/преобразования объектов в строку c#([uwp)

У меня есть прямоугольник, заполненный цветом (каждый раз это другой цвет). Я хочу иметь возможность получить название цвета, например «Зеленый», через цвет заполнения этого прямоугольника. Кто-нибудь знает, как я могу это сделать? Я пробовал следующее:

        Brush a = rect.Fill;
        Color color = ((SolidColorBrush)a).Color;
        string thecolor = color.ToString();
        switch (thecolor)
        {
            case "Red": furText.SelectedIndex = 0; break;
            case "Blue": furText.SelectedIndex = 1; break;
            case "Yellow": furText.SelectedIndex = 2; break;
            case "Pink": furText.SelectedIndex = 3; break;
            case "Green" : furText.SelectedIndex = 4;break;
        }

В основном я пытаюсь изменить выбранный по умолчанию элемент моего списка со списком, чтобы он соответствовал цвету заполнения прямоугольника. путем отладки я мог видеть, что мой код может фактически получить кисть и даже преобразовать ее в сплошные цветные кисти, однако сплошная цветная кисть имеет шестнадцатеричный формат, и мне нужно само имя. Кто-нибудь знает что делать?


person Karoline    schedule 08.12.2018    source источник


Ответы (1)


Вы можете попробовать это, он отлично работает. ваше название цвета будет в selectedcolorname

        Brush a = rect.Fill;
        Color color = ((SolidColorBrush)a).Color;
        string selectedcolorname;
        foreach (var colorvalue in typeof(Colors).GetRuntimeProperties())
        {
            if ((Color)colorvalue.GetValue(null) == color)
            {
                selectedcolorname = colorvalue.Name;
            }
        }
person Vignesh    schedule 08.12.2018