Как хранить цвета в строке? - PullRequest
3 голосов
/ 12 января 2012

Я хочу сохранить цвет в строке, если они в формате, удобном для чтения, и ToArgb (), если это не так.

Цвет - красный, затем сохранить его в строке «красный», а если цвет, скажем, какой-то вариантзеленый, тогда он сохраняется как "ff40ff80".

Во время выполнения я хочу преобразовать эти строки обратно в класс Color Object?

Ответы [ 3 ]

4 голосов
/ 16 декабря 2014
Color color = Color.Red;
string colorName = color.Name; // this gives you the ability to switch back to Color through Color.FromName()
Color sameColor = Color.FromName(colorName);
4 голосов
/ 12 января 2012

Вам повезло. Метод Color.ToString() сделает это за вас:

Возвращаемое значение

Тип: System.String

Строка, которая является именем этого Цвета, если Цвет создается из предварительно определенного цвета с использованием метода FromName или FromKnownColor; в противном случае строка, состоящая из имен компонентов ARGB и их значений.

3 голосов
/ 12 января 2012

Как уже сказал Коди Грей, довольно просто получить информацию из цвета.Проблема в том, чтобы вернуть его в цвет.

Так что, возможно, это даст вам какую-то отправную точку.Он не проверен, но если вы дадите несколько идей о том, как его решить.

public Color FromString(string name)
{
    if(String.IsNullOrWhitespace(name))
    {
        throw new ArgumentException("name");
    }

    KnownColor knownColor;

    if(Enum.TryParse(name, out knownColor))
    {
        return Color.FromKnownColor(knownColor);
    }

    return ColorTranslator.FromHtml(name);
}

Я просто помню, что есть несколько проблем, в зависимости от того, как цвет записан в виде строки.Для каждого существует некоторый класс в рамках, но они разбиты по всем пространствам имен (например, ColorTranslator).

Просто будьте внимательны, если вы просто позвоните Color.FromName(Color.FromArgb(3,4,5,6).ToString()), вы получите цвет с именем,но все значения argb равны нулю!

...