Usando C # estaba tratando de desarrollar los siguientes dos. La forma en que lo estoy haciendo puede tener algún problema y necesitar su amable consejo. Además, no sé si existe algún método para hacer lo mismo.
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;
}
Gracias.
c#
asp.net
rgb
system.drawing.color
Nazmul
fuente
fuente
Respuestas:
No puedo ver el problema aquí. El código me parece bien.
Lo único que ocurre es que los bloques try / catch son redundantes - El color es una estructura y R, G y B son bytes, por lo que c no puede ser nulo y
c.R.ToString()
,c.G.ToString()
yc.B.ToString()
en realidad no puede fallar (el La única forma en que puedo verlos fallar es con unNullReferenceException
, y ninguno de ellos puede ser nulo).Puedes limpiar todo usando lo siguiente:
fuente
Puede hacerlo simple y usar el traductor de color nativo:
Luego divida los tres pares de colores en forma entera:
fuente
Si puede usar C # 6 o superior, puede beneficiarse de las cadenas interpoladas y reescribir la solución de @Ari Roth de esta manera:
C # 6:
También:
this
para usarlos como métodos de extensiones.string
lugar del nombre de la clase.fuente
p.ej
Esto puede evitar el truco de KnownColor.
fuente
Encontré un método de extensión que funciona bastante bien
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
fuente
X2
lugar deX
, de lo contrario podría obtener en1
lugar de01
entonces será un problema.X2
eso no necesitas todos loscolor.B.ToString("X").Length == 1 ?
ternaries.Para el código hexadecimal intente esto
& 0x00FFFFFF
Para RGB uno
Red
,Green
,Blue
valoresImplementación
fuente