我正在使用 Windows Phone。问题是它 没有Color.FromName 相反它有 Color.FromArgb.

我有一个矩形,我想根据正在读取的文件的颜色来设置其填充颜色。例如我已将“红色”保存在名为颜色的文件中。我读了它并将其发送到一个名为 LpColor 现在里面将包含文本“Red”。

现在我该如何使用 LpColorRectangle.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 可能是一个更好的主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top