Изменение цвета путем чтения из файла
-
20-12-2019 - |
Вопрос
Я использую Windows Phone.Проблема в том, что это не имеет тот Color.FromName
вместо этого у него есть Color.FromArgb
.
У меня есть прямоугольник, и я хочу установить цвет его заливки в зависимости от цвета читаемого файла.напримерЯ сохранил «Красный» в файле цвета.Я прочитал это и отправил в строку с именем LpColor
теперь внутри будет находиться текст «Красный».
Теперь, как мне использовать LpColor
в Rectangle.Fill = ...
.Выполнение Rectangle.Fill = LpColor не сработает.
Это код того, как я читаю свой файл:
IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
var color = contactColor.ReadToEnd();
LpColor = color;
}
Решение
Если вам необходимо сохранить его как строку (красный), вы можете написать метод конвертера, который преобразует строку обратно в цвет.В зависимости от того, сколько цветов у вас есть, сложность метода будет расти, поэтому вам, возможно, захочется переосмыслить сохранение цвета как имени — возможно, вы могли бы сохранить его как комбинацию ARGB и имени?Использовать класс для хранения этой информации?Есть много-много вариантов.
В любом случае ваш простой конвертер будет делать что-то вроде этого:
private SolidColorBrush ColorNameToBrush(string colorName)
{
Color color = Color.FromArgb(0,0,0,0);
if (colorName == "Red")
{
color = new Color() { R = 255, G = 0, B = 0};
}
else if ...
{
}
return new SolidColorBrush(color);
}
Однако использование оператора switch вместо бесконечного if-else-if может быть лучшей идеей, если у вас много строк.