Как создать System.Drawing.Color из его шестнадцатеричной строки RGB?

84

Я хочу создать System.Drawing.Colorиз такого значения, как #FF00FFили FF00FFбез необходимости писать код для этого. Есть ли для этого встроенный в .NET парсер?

Джадер Диас
источник

Ответы:

167
ColorTranslator.FromHtml("#FF00FF");
Жоао Анджело
источник
62

Вы можете использовать статический метод FromHtml System.Drawing.ColorTranslator.

использование:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Пэт
источник
18

Это довольно просто, когда вы используете Convert-Class . У ToInt32функции есть перегрузка со вторым параметром, который представляет основу, в которой находится строка.

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Бобби
источник
9

Используйте класс ColorConverter :

var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );

Это также может быть преобразовано из стандартных именованных цветов, например ConvertFromString ("Blue")

См. Здесь обсуждение стандартных механизмов преобразования типов .NET.

Фил Девани
источник
1

Если цвет, который вы хотите использовать, является постоянным, в C # используйте System.Drawing.Color.FromArgb (0xFF00FF). Это немного быстрее, чем System.Drawing.Color.FromNameили System.Drawing.Color.FromHtml, поскольку преобразование строки в целое число выполняется во время компиляции, а не во время выполнения.

Майкл Родби
источник
0

У меня сработал метод FromName

System.Drawing.Color.FromName("#FF00FF");
bicbmx
источник