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

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


person Jader Dias    schedule 16.12.2009    source источник


Ответы (5)


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

использовать:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
person Pat    schedule 16.12.2009

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

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
person Bobby    schedule 16.12.2009

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

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

Это также может преобразовывать стандартные именованные цвета, например. Преобразовать из строки («Синий»)

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

person Phil Devaney    schedule 16.12.2009

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

person Michael Rodby    schedule 15.05.2014

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

System.Drawing.Color.FromName("#FF00FF");
person bicbmx    schedule 24.12.2013