Usando C #, eu estava tentando desenvolver os dois seguintes. A maneira como estou fazendo isso pode ter algum problema e precisar de seus gentis conselhos. Além disso, não sei se existe algum método existente para fazer o mesmo.
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;
}
Obrigado.
c#
asp.net
rgb
system.drawing.color
Nazmul
fonte
fonte
Respostas:
Não estou conseguindo ver o problema aqui. O código parece bom para mim.
A única coisa que posso pensar é que os blocos try / catch são redundantes - A cor é uma struct e R, G e B são bytes, então c não pode ser nulo e
c.R.ToString()
,c.G.ToString()
ec.B.ToString()
realmente não pode falhar (o a única maneira de vê-los falhando é com aNullReferenceException
e nenhum deles pode ser nulo).Você pode limpar tudo usando o seguinte:
fonte
Você pode simplificar e usar o tradutor de cores nativo:
Em seguida, divida os três pares de cores na forma inteira:
fonte
Se você pode usar C # 6 ou superior, pode se beneficiar de Interpolated Strings e reescrever a solução do @Ari Roth assim:
C # 6:
Além disso:
this
- chave para usá-los como métodos de extensões.string
vez do nome da classe.fonte
por exemplo
Isso pode evitar o truque KnownColor.
fonte
Encontrei um método de extensão que funciona muito bem
Ref: https://social.msdn.microsoft.com/Forums/en-US/4c77ba6c-6659-4a46-920a-7261dd4a15d0/how-to-convert-rgba-value-into-its-equivalent-hex-code? forum = winappswithcsharp
fonte
X2
vez deX
, caso contrário, você pode obter em1
vez de01
então será um problema.X2
então você não precisa de todos oscolor.B.ToString("X").Length == 1 ?
ternários.Para código hexadecimal, tente isto
& 0x00FFFFFF
Para um RGB
Red
,Green
,Blue
valoresImplementação
fonte