如何在app.config中指定颜色,然后在运行时将其转换为实际的System.Drawing.Color对象?
答案 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()
}
}