如何在配置中指定颜色

时间:2008-11-03 11:27:07

标签: c# .net winforms

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

6 个答案:

答案 0 :(得分:3)

一种方法是指定其中一个KnownColor值作为配置文本,然后使用Color.FromName创建Color对象。

答案 1 :(得分:2)

Color很奇怪;常规的xml-serialization通常不起作用 - 因此您经常需要添加自己的代码,可能是通过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 :(得分:2)

你的配置看起来像这样:

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

您可以将其转换为颜色:

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

答案 3 :(得分:2)

看看ColorTranslator。你可以在appSettings中指定一种颜色,并使用ColorTranslator将其转换为真实颜色。特别是我发现.FromHtml()方法非常有用。

答案 4 :(得分:0)

我在ASP.NET中编写了关于自定义配置部分的this article ...但是“app.config”(非网络应用程序)的主体(和代码)是相同的。但是,如果这对你来说太过分了,那么你可以按照其他一些人的说法转换字符串。

答案 5 :(得分:0)

您可以将颜色存储为可以序列化的int值,并添加使用toArgb的类型为color的属性,并使用argb进行转换。

e.g。

private ColorInt

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