Я хочу создать System.Drawing.Color
из значения, такого как #FF00FF
или FF00FF
, без необходимости писать код для этого. Для этого есть какой-либо встроенный синтаксический анализатор .NET?
Как создать System.Drawing.Color из его шестнадцатеричной строки RGB?
Ответ 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
, поскольку синтаксический анализ от строки до целого выполняется во время компиляции, а не во время выполнения.