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

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

Ответ 1

ColorTranslator.FromHtml("#FF00FF");

Ответ 2

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

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

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

Ответ 3

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

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));

Ответ 4

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

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

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

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

Ответ 5

Метод FromName работал у меня

System.Drawing.Color.FromName("#FF00FF");

Ответ 6

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