Конвертировать объект в System.Drawing.Color - PullRequest
2 голосов
/ 18 апреля 2011

Я знаю, что есть много способов преобразования цветов в C #, от преобразования строк до значений Color, преобразования HTML и даже каркаса XNA; Тем не менее, у меня есть объект, который возвращает тип System.Drawing.Color; но так как это «объект», а не «цвет», я не могу использовать обычные цветовые команды для него.

public void SetPropertyValue(string propertyName, object value)
    {
        _PropertyValues[propertyName] = value;
        Console.WriteLine("Setting Property: {0}={1}", propertyName, value);
    }

Выше описывается, что происходит, когда пользователь изменяет значение свойства Grid в C #. Результаты ниже:

Известные имена

Настройка свойства: цвет = цвет [DimGray]

Пользовательский цвет

Свойство настройки: Цвет = Цвет [A = 255, R = 255, G = 255, B = 128]

Цвет системы

Свойство настройки: Color = Color [ControlText]

Я хотел бы взять значения, которые у него есть, и фактически преобразовать их в цвет, чтобы я мог иметь его в переменной defaultColor, которая была ранее создана в программе.

Однако, поскольку это объект , а не фактический 'System.Drawing.Color', я не могу использовать такие вещи, как:

.ToKnownColor ()

.ToArgb ()

.ToName ()

и так далее.

Я знаю, что должен быть способ преобразования объекта в реальный цвет. Я делаю value.GetType (), и он возвращает System.Drawing.Color , поэтому система знает, что это цвет, но я не могу манипулировать им при жизни.

Я пока не эксперт в C #, извините, если это звучит так просто, но мне все равно нужна помощь.

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011

Объект действительно является Color, на него просто ссылается ссылка на объект.Так что все, что вам нужно сделать, это привести его к цвету.

Color myColor = (Color)value;
// now you can do all color operations on myColor
2 голосов
/ 18 апреля 2011

Вы должны просто иметь возможность привести object к Color, если это все, что это:

Color color = (Color)value;
2 голосов
/ 18 апреля 2011

Приведите его к Color:

var effectiveColor = (System.Drawing.Color)value;

Эта вещь в скобках - это явное приведение , где вы сообщаете компилятору, что вы знаете лучше и что фактический типпеременная это нечто другое.

...