Как создать System.Drawing.Color из шестнадцатеричной строки RGB? - PullRequest
80 голосов
/ 16 декабря 2009

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

Ответы [ 6 ]

156 голосов
/ 16 декабря 2009
ColorTranslator.FromHtml("#FF00FF");
58 голосов
/ 16 декабря 2009

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

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

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
16 голосов
/ 16 декабря 2009

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

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
9 голосов
/ 16 декабря 2009

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

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

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

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

1 голос
/ 15 мая 2014

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

0 голосов
/ 24 декабря 2013

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

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