Я хочу создать System.Drawing.Color
из таких значений, как #FF00FF
или FF00FF
, без необходимости писать для этого код. Есть ли для этого встроенный парсер .NET?
Как создать System.Drawing.Color из шестнадцатеричной строки RGB?
Ответы (5)
Вы можете использовать статический метод FromHtml System.Drawing.ColorTranslator.
использовать:
System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
Это довольно просто, если вы используете Convert-Class. Функция ToInt32
имеет перегруженную версию со вторым параметром, представляющим основу строка внутри.
using System.Drawing
Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
Используйте класс ColorConverter:
var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );
Это также может преобразовывать стандартные именованные цвета, например. Преобразовать из строки («Синий»)
См. здесь обсуждение стандартных механизмов преобразования типов .NET.
Если цвет, который вы хотите использовать, является константой, в C# используйте System.Drawing.Color.FromArgb (0xFF00FF)
. Это немного быстрее, чем System.Drawing.Color.FromName
или System.Drawing.Color.FromHtml
, поскольку преобразование строки в целое число выполняется во время компиляции, а не во время выполнения.
У меня сработал метод FromName
System.Drawing.Color.FromName("#FF00FF");