System.Drawing.Color конвертировать FromArgb выпуск - PullRequest
1 голос
/ 09 февраля 2012

Я сохраняю свой цвет в дБ в значении int.

int icolor = System.Drawing.Color.Red.ToArgb();
//result: -65536

При преобразовании типа int в Color теряется свойство Color.Name. Должно возвращать "Red", но свойство должно возвращать "ff000000". Чем я занимаюсь?

Мне нужно получить это - свойство Red, но не шестнадцатеричное значение

Ответы [ 4 ]

7 голосов
/ 09 февраля 2012

Попробуйте это

System.Drawing.ColorTranslator.FromHtml("#" + "Hex value").Name
3 голосов
/ 09 февраля 2012

Вы не делаете ничего плохого.

ff в шестнадцатеричном формате равняется 255, что является десятичным значением для цвета Red, которое возвращается System.Drawing.Color.Red.ToArgb();

Если вы хотите получить название цвета, используйте System.Drawing.Color.Red.Name

string sRedColorName = System.Drawing.Color.Red.Name;
2 голосов
/ 09 февраля 2012

При преобразовании int в Color, чем свойство lost.Came.Name.

Да, это правильно.Вот как работает свойство Color.Name.Согласно документации :

Этот метод возвращает либо определяемое пользователем имя цвета, если цвет был создан из имени, либо имя известного цвета.Для пользовательских цветов возвращается значение RGB.

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

Эта информация не определяется динамически во время выполнения путем итерации по карте, содержащей все известные цвета и их значения RGB, а скорее сохраняется в частных полях стража во время, когда Color объект создан.Вы теряете эту информацию в процессе сериализации информации о цвете в вашу базу данных как целое число.

0 голосов
/ 09 февраля 2012

Вы перепутали известные цвета и просто цвета. Когда вы конвертируете известный цвет в int и конвертируете его обратно в цвет, вы теряете имя. Вы должны сделать это:

 int icolor = System.Drawing.Color.Red.ToArgb();

 Color knownColor = System.Drawing.Color.FromArgb(icolor).ToKnownColor();
...