Как указать цвет в конфиге - PullRequest
3 голосов
/ 03 ноября 2008

Как мне указать цвет в app.config и затем преобразовать его в реальный объект System.Drawing.Color во время выполнения?

Ответы [ 6 ]

3 голосов
/ 03 ноября 2008

Один из способов - указать одно из значений KnownColor в качестве текста конфигурации, а затем использовать Color.FromName для создания объекта Color.

2 голосов
/ 03 ноября 2008

Посмотрите на ColorTranslator . Вы сможете указать цвет, скажем, в appSettings и использовать ColorTranslator, чтобы преобразовать его в реальный цвет. В частности, я нашел метод .FromHtml () очень полезным.

2 голосов
/ 03 ноября 2008

Ваш конфиг будет выглядеть так:

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

и вы можете преобразовать его в цвет:

Color myColor = Color.FromName(ConfigurationManager.AppSettings["KEY"]);
2 голосов
/ 03 ноября 2008

Color - странность; обычная 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
0 голосов
/ 03 ноября 2008

Вы можете просто сохранить цвет как значение типа int, которое можно сериализовать, и добавить свойство типа color, которое использует toArgb и argb для его преобразования.

, например

private ColorInt

public Color shapeColor
{
    get {
         return Color.FromArgb(ColorInt);
     }
      set 
    {
        ColorInt = value.toargb()
    }
}
0 голосов
/ 03 ноября 2008

Я написал в этой статье о пользовательских разделах конфигурации в ASP.NET ... но принцип (и код) такой же для "app.config" (не веб-приложений). Но если это для вас излишне, тогда вы можете просто преобразовать строку, как уже упоминалось несколькими людьми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...