通过从文件中读取来改变颜色

时间:2014-02-24 22:46:34

标签: c# windows-phone-8 colors

我正在使用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;
}

1 个答案:

答案 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可能是一个更好的主意。