如何在配置文件中指定颜色

3

我该如何在app.config中指定颜色,并在运行时将其转换为实际的System.Drawing.Color对象?

6个回答

4

3

请看ColorTranslator。您可以指定一个颜色,比如在appSettings中,并使用ColorTranslator将其转换为实际的颜色。特别是我发现.FromHtml()方法非常有用。


2

颜色是一个奇怪的现象;常规的xml序列化通常不起作用-因此您经常需要添加自己的代码,可能通过TypeConverter

static void Main()
{

    Test(Color.Red);
    Test(Color.FromArgb(34,125,75));
}
static void Test(Color color)
{
    TypeConverter converter = TypeDescriptor.GetConverter(typeof(Color));
    string s = converter.ConvertToInvariantString(color);
    Console.WriteLine("String: " + s);
    Color c = (Color) converter.ConvertFromInvariantString(s);
    Console.WriteLine("Color: " + c);
    Console.WriteLine("Are equal: " + (c == color));
}

输出:

String: Red
Color: Color [Red]
Are equal: True
String: 34, 125, 75
Color: Color [A=255, R=34, G=125, B=75]
Are equal: True

2

您的配置应该如下所示:

<add key="SomethingsColor" value="Black" />

你可以将其转换为颜色:

Color myColor = Color.FromName(ConfigurationManager.AppSettings["KEY"]);

0
你可以将颜色存储为 int 值,这可以被序列化,并添加一个类型为 color 的属性,该属性使用 toArgb 和 fromArgb 进行转换。
例如:
private ColorInt

public Color shapeColor
{
    get {
         return Color.FromArgb(ColorInt);
     }
      set 
    {
        ColorInt = value.toargb()
    }
}

0

我写了这篇文章,讲述了在ASP.NET中自定义配置节的方法...但是原理(以及代码)同样适用于"app.config"(非Web应用程序)。但如果你认为这太麻烦了,那么你可以像其他人提到的那样直接转换字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接