Как в C # создать объект System.Drawing.Color с использованием шестнадцатеричного значения?

В C #, как я могу создать объект System.Drawing.Color, используя такое значение, как это # ​​FFFFF, # FGFG01 и т. Д.


person Shyju    schedule 19.11.2009    source источник
comment
Имейте в виду, что если вы получаете шестнадцатеричное значение из строки запроса, хеш будет закодирован как% 23.   -  person Phillip    schedule 18.01.2013


Ответы (4)


string hexValue = "#000000"; // You do need the hash
Color colour = System.Drawing.ColorTranslator.FromHtml(hexValue); // Yippee

Изменить: вам действительно нужен хеш, иначе альфа-значение не будет учитываться. Ой!

person djdd87    schedule 19.11.2009
comment
Хороший ответ + бонусные баллы за Yippee - person Paul Turner; 19.11.2009
comment
Пришлось изменить мое сравнение if (color == Black), поскольку это два разных объекта, поэтому условие никогда не было бы истинным. Оставил комментарий ура - только для вас! - person djdd87; 19.11.2009
comment
да. HASH необходим. В противном случае будет выдана ошибка - person Shyju; 19.11.2009

var my col = Color.FromArgb (int x);

обратите внимание, что вам также необходимо указать альфа-значение (возможно, вам нужен FF для этого, т.е. полностью непрозрачный, поэтому добавьте 0xFF000000 к шестнадцатеричному значению цвета)

person jk.    schedule 19.11.2009
comment
+1 Он может использовать Int32.Parse, чтобы превратить шестнадцатеричную строку в int, просто опустите #. - person Matt Ellen; 19.11.2009

Можете ли вы изменить значения, чтобы они начинались с FF? Например. FFFFFFFF = белый. Это необходимо для добавления альфа-значения в начало.

Если это так, просто проанализируйте значение с помощью System.Drawing.Color.FromArgb. Требуется int, где первые 8 бит - это альфа-значение. 255 непрозрачен.

Чтобы преобразовать вашу строку в int, используйте Int32.Parse. Например.

String HexColourValue = "FABFAB";
System.Drawing.Color colour = System.Drawing.Color.FromArgb(Int32.Parse("FF"+HexColourValue,
                              System.Globalization.NumberStyles.HexNumber));

Убедитесь, что в HexColourValue нет символа #.

person Matt Ellen    schedule 19.11.2009

person    schedule
comment
не даст ли это значение аплха 0, которое является прозрачным? - person jk.; 19.11.2009
comment
Да, если поддерживается альфа. Вам нужно будет использовать # FF123456, если вы хотите непрозрачные цвета, или добавить 0xff000000 к результату преобразования. - person EricSchaefer; 19.11.2009