Используя C #, я пытался разработать следующие два. То, как я это делаю, может вызвать проблемы, и мне понадобится ваш добрый совет. Кроме того, я не знаю, существует ли какой-либо способ сделать то же самое.
private static String HexConverter(System.Drawing.Color c)
{
String rtn = String.Empty;
try
{
rtn = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}
catch (Exception ex)
{
//doing nothing
}
return rtn;
}
private static String RGBConverter(System.Drawing.Color c)
{
String rtn = String.Empty;
try
{
rtn = "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
}
catch (Exception ex)
{
//doing nothing
}
return rtn;
}
Спасибо.
c#
asp.net
rgb
system.drawing.color
Nazmul
источник
источник
Ответы:
Я не вижу здесь проблемы. Код мне нравится.
Единственное , что я могу думать о том , что Try / уловах блоки являются избыточными - цвет является структурой и R, G, B и байты, так что с не может быть пустым и
c.R.ToString()
,c.G.ToString()
иc.B.ToString()
фактически не может терпеть неудачу ( единственный способ увидеть, как они проигрывают, - этоNullReferenceException
, и ни один из них не может быть нулевым).Вы можете очистить все это, используя следующее:
источник
Вы можете сделать это просто и использовать собственный переводчик цветов:
Затем разбейте три пары цветов в целочисленную форму:
источник
Если вы можете использовать C # 6 или выше, вы можете воспользоваться Interpolated Strings и переписать решение @Ari Roth следующим образом:
С # 6:
Также:
this
чтобы использовать их в качестве методов расширения.string
вместо имени класса.источник
например
Это поможет избежать уловки KnownColor.
источник
Я нашел способ расширения, который работает достаточно хорошо
Ссылка: https://social.msdn.microsoft.com/Forums/en-US/4c77ba6c-6659-4a46-920a-7261dd4a15d0/how-to-convert-rgba-value-into-its-equivalent-hex-code? форум = winappswithcsharp
источник
X2
вместоX
, иначе вы можете получить1
вместо,01
тогда это будет проблемой.X2
тогда вам не нужны всеcolor.B.ToString("X").Length == 1 ?
троичные.Для шестнадцатеричного кода попробуйте это
& 0x00FFFFFF
Для одного RGB
Red
,Green
,Blue
значенияРеализация
источник