我正在使用Windows Phone。问题是没有 Color.FromName
而是Color.FromArgb
。
我有一个矩形,我想根据正在读取的文件的颜色设置其填充颜色。例如我在一个名为colors的文件中保存了“Red”。我读了那个,然后把它发送到一个名为LpColor
的字符串,现在里面会包含文本“Red”。
现在我如何在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;
}
答案 0 :(得分:1)
如果必须将其保存为字符串(红色),则可以编写转换器方法,将字符串转换回颜色。根据您拥有的颜色数量,方法的复杂性会增加,因此您可能需要重新考虑将颜色保存为名称 - 也许您可以将其保存为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可能是一个更好的主意。