Mit C # habe ich versucht, die folgenden beiden zu entwickeln. Die Art und Weise, wie ich es mache, kann ein Problem haben und braucht Ihren freundlichen Rat. Außerdem weiß ich nicht, ob es eine Methode gibt, um dasselbe zu tun.
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;
}
Vielen Dank.
c#
asp.net
rgb
system.drawing.color
Nazmul
quelle
quelle
Antworten:
Ich sehe das Problem hier nicht. Der Code sieht für mich gut aus.
Das einzige , was ich denken kann, ist , dass die try / catch - Blöcke sind redundant - Farbe ist eine Struktur und R, G und B sind Bytes, so c nicht Null und sein kann
c.R.ToString()
,c.G.ToString()
undc.B.ToString()
scheitern nicht wirklich kann (die Ich kann nur sehen, dass sie versagen, mit aNullReferenceException
, und keiner von ihnen kann tatsächlich null sein.Sie können das Ganze folgendermaßen aufräumen:
quelle
Sie können es einfach halten und den nativen Farbübersetzer verwenden:
Brechen Sie dann die drei Farbpaare in eine ganzzahlige Form:
quelle
Wenn Sie C # 6 oder höher verwenden können, können Sie von Interpolated Strings profitieren und die Lösung von @Ari Roth folgendermaßen umschreiben :
C # 6:
Ebenfalls:
this
, um sie als Erweiterungsmethoden zu verwenden.string
anstelle des Klassennamens verwenden.quelle
z.B
Dies kann den KnownColor-Trick vermeiden.
quelle
Ich habe eine Erweiterungsmethode gefunden, die recht gut funktioniert
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
quelle
X2
stattdessenX
, sonst könnten Sie1
stattdessen bekommen,01
dann wird es ein Problem sein.X2
dann brauchst du nicht allecolor.B.ToString("X").Length == 1 ?
Ternaries.Versuchen Sie dies für hexadezimalen Code
& 0x00FFFFFF
Für RGB eins
Red
,Green
,Blue
WerteImplementierung
quelle