Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过读取文件更改颜色_C#_Windows Phone 8_Colors - Fatal编程技术网

C# 通过读取文件更改颜色

C# 通过读取文件更改颜色,c#,windows-phone-8,colors,C#,Windows Phone 8,Colors,我正在使用Windows Phone。问题是它没有颜色,而是颜色。FromName 我有一个矩形,我想根据正在读取的文件的颜色设置它的填充颜色。e、 我已将“红色”保存在一个名为“颜色”的文件中。我读了它,然后将它发送到一个名为LpColor的字符串,该字符串将在其中保存文本“Red” 现在我如何在Rectangle.Fill=…中使用LpColor。执行Rectangle.Fill=LpColor将不起作用 以下是我如何读取文件的代码: IsolatedStorageFileStream re

我正在使用Windows Phone。问题是它没有
颜色,而是
颜色。FromName

我有一个矩形,我想根据正在读取的文件的颜色设置它的填充颜色。e、 我已将“红色”保存在一个名为“颜色”的文件中。我读了它,然后将它发送到一个名为
LpColor
的字符串,该字符串将在其中保存文本“Red”

现在我如何在
Rectangle.Fill=…
中使用
LpColor
。执行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和name的组合?使用类来保存该信息?有很多选择

无论如何,您的简单转换器将执行以下操作:

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

谢谢!但是当我使用它时:
Rect.Fill=ColorNameToBrush(LpColor)
表示:
返回新的SolidColorBrush(颜色)使用未赋值局部变量“color”有什么想法吗?哦,是的,我编辑了我的答案,在方法开始时将颜色设置为(0,0,0,0),以备您的转换器代码(在本例中为if else if)无法生成颜色时使用……谢谢Igrali!完全正确正是我需要的:D