2

16進値を対応する色名に変換しようとしていますが、ColorConverterのConvertFromStringメソッドが余分な文字を挿入しています。

string s1 = "#000000";
string s2 = "#ccff33";
string s3 = "#990000";
Color color;
ColorConverter converter = new ColorConverter();

color = (Color)converter.ConvertFromString(s1);
Console.Write(color.Name); // Outputs "Black"

color = (Color)converter.ConvertFromString(s2);
Console.Write(color.Name); // Outputs "ffccff33";

color = (Color)converter.ConvertFromString(s3);
Console.Write(color.Name); // Outputs "ff990000";

余分な「ff」は、白黒以外のすべての色で不可解に発生します。なぜこれが起こっているのか誰かが知っていますか?

4

4 に答える 4

4

私たちのプロジェクトの1つにも同様の機能があり、次のものを使用できます

(color)ColorTranslator.FromHtml(s1);
于 2012-07-31T14:17:42.897 に答える
1

代わりにColorTranslator.FromHtmlメソッドを使用できます

于 2012-07-31T14:15:26.663 に答える
0

これSystem.Drawing.Colorは、色をARGB形式(Alpha + RGB)で保存するためです。

RGB値だけを印刷するには:

Console.Write(color.Name.Substring(2));
于 2012-07-31T14:17:32.583 に答える
0

余分な「ff」は、この場合は100%の色の不透明度を表します(davenewzaが言ったように)。

ヘキサの色には、最初にアルファまたは不透明度の2つのオプション文字、赤の2文字、緑の2文字、青の2文字があります(#FF CC FF 33)

于 2015-03-26T13:38:47.510 に答える