#c# #.net #colors
#c# #.net #Цвет
Вопрос:
Я знаю, что существует множество способов преобразования цветов в C #, начиная от преобразования строк в значения цвета, преобразования HTML и даже XNA framework; однако у меня есть объект, который возвращает тип System.Рисование.Цвет; но поскольку это «объект», а не «цвет», я, похоже, не могу использовать для него обычные команды color.
public void SetPropertyValue(string propertyName, object value)
{
_PropertyValues[propertyName] = value;
Console.WriteLine("Setting Property: {0}={1}", propertyName, value);
}
Выше описано, что происходит, когда пользователь изменяет значение в таблице свойств в C #. Результаты приведены ниже:
Известные имена
Настройка свойства: Color=Цвет [затемненный]
Пользовательский цвет
Настройка свойства: Color=Цвет [A=255, R=255, G=255, B=128]
Системный цвет
Настройка свойства: Color=Цвет [ControlText]
Я хотел бы взять значения, которые он имеет там, и фактически преобразовать его в цвет, чтобы я мог использовать его в переменной DefaultColor, которая была создана ранее в программе.
Однако, поскольку это объект, а не фактическая ‘система.Рисование.Color’, я не могу использовать такие вещи, как:
.ToKnownColor()
.ToArgb()
.ToName()
и так далее.
Я знаю, что должен быть способ преобразовать объект в реальный цвет. Я задаю значение.GetType() и он возвращает System.Рисование.Цвет, поэтому система знает, что это цвет, но, хоть убейте, я не могу им манипулировать.
Я пока не эксперт в C #, поэтому извините, если это звучит так просто, но я все равно хотел бы получить некоторую помощь с этим.
Ответ №1:
Объект действительно является Color
, на него просто ссылается ссылка на объект. Итак, все, что вам нужно сделать, это придать ему цвет.
Color myColor = (Color)value;
// now you can do all color operations on myColor
Комментарии:
1. Большое вам спасибо; я все еще новичок, когда дело доходит до C #, о некоторых из этих вещей я еще не совсем осведомлен 🙂
Ответ №2:
Преобразовать его в Color
:
var effectiveColor = (System.Drawing.Color)value;
Эта вещь в скобках является явным приведением, когда вы сообщаете компилятору, что знаете лучше и что фактический тип переменной — это что-то другое.
Комментарии:
1. Потрясающе, и спасибо за быстрый ответ. Извините, что иногда бываю таким болваном :(. Кстати, почему это работает? Я не очень часто видел подобные аннотации, поэтому не совсем уверен, почему это работает.
2. хаха, большое спасибо за ответ; мне нравится, как вы описали, почему это работает, лол. Это будет весьма кстати. 🙂
Ответ №3:
Вы должны просто иметь возможность преобразовать object
в Color
, если это все, что нужно:
Color color = (Color)value;