Как получить цвет из шестнадцатеричного цветового кода с помощью .NET?

Используйте CHAR (1) и ограничение, чтобы разрешить только «1» и «0».

...

col CHAR(1),
CONSTRAINT cons_atable_col1 CHECK (col1 IN ('1','0'))
552
задан John 22 September 2017 в 06:18
поделиться

5 ответов

Я предполагаю, что это код ARGB ... вы ссылаетесь на System.Drawing.Color или System.Windows.media.Color ? Последний используется в WPF, например. Я еще не видел, как никто не упоминал это, так что на всякий случай, если вы искали это:

using System.Windows.Media;

Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");
706
ответ дан 22 November 2019 в 22:11
поделиться

Предполагая, что вы имеете в виду код RGB типа HTML (называемые шестигранными кодами, такие как # FFCC66), используют класс Colortranslator :

System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");

, если, однако вы используете Argb Hex Code, вы можете использовать Colorconverter ColorConverter класс от System.Windows.media пространства имен:

Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or      = (Color) ColorConverter.ConvertFromString("#FFCC66") ;
534
ответ дан 22 November 2019 в 22:11
поделиться

Use

System.Drawing.Color.FromArgb(myHashCode);
0
ответ дан 22 November 2019 в 22:11
поделиться

Если вы имеете в виду HashCode как в .GetHashCode(), то, боюсь, вы не сможете вернуться. Хэш-функции не являются двунаправленными, вы можете идти только 'вперед', а не назад.

Следуйте предложению Одеда, если вам нужно получить цвет, основанный на шестнадцатеричном значении цвета.

0
ответ дан 22 November 2019 в 22:11
поделиться

Если вы не хотите использовать ColortransLator, вы можете легко сделать это легко:

string colorcode = "#FFFFFF00";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
Color clr = Color.FromArgb(argb);

ColorCode является просто шестнадцатеричным представлением значения ARGB.

Отредактируйте

Если вам нужно использовать 4 значения вместо одного целого числа, вы можете использовать это (объединение нескольких комментариев):

string colorcode = "#FFFFFF00";    
colorcode = colorcode.TrimStart('#');

Color col; // from System.Drawing or System.Windows.Media
if (colorcode.Length == 6)
    col = Color.FromArgb(255, // hardcoded opaque
                int.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber));
else // assuming length of 8
    col = Color.FromArgb(
                int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber),
                int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber));

Примечание 1 : Neumpertyles находится в System.Globalization.
Примечание 2 : Пожалуйста, укажите свою собственную проверку ошибок (ColorCode должен быть шестнадцатеричным значением 6 или 8 символов)

108
ответ дан 22 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: