2

次のような RGB トリプレットを含む文字列から Color 値をインスタンス化するための .Net Framework の一部であるメソッドが既に存在するかどうかを知りたいです。

「166、103、208」

Color がアプリケーションの app.config に保存されている場合、それは文字列として保存されます。可能であれば、.Net がそのような文字列値を逆シリアル化して色に戻す方法を知りたいです。

4

3 に答える 3

2

.NET がこれをネイティブに実行できるとは思わないでください (Color に Parse メソッドがあると便利です)。

これを試して

string[] strValues = "166, 103, 208".Split(',');
byte[] numValues = new byte[3];
for(int index = 0; index < numValues.Length; index++)
{
    numValues[index] = Byte.Parse(strValues[index]);
}
Color result = Color.FromArgb(numValues[0], numValues[1], numValues[2]);
于 2012-11-02T15:18:02.407 に答える
2

リクエストの時点で、これを回答にしています)

3 バイトとして記述する代わりに、ColorTranslatorクラスを使用するのはどうですか?

ToHtmlメソッドとFromHtmlメソッドを使用してHTML 形式で保存し、バイト形式ではなく HTML 形式で読み戻すことで、組み込みの何かを使用できますが、定義によると「シリアル化」ではありません。

例は次のとおりです。

// "Deserialize" from a given string.
Color myColor = ColorTranslator.FromHtml("#45A3C7");

// "Serialize" to a string.
string htmlColor = ColorTranslator.ToHtml(Color.Red);
于 2012-11-02T16:13:00.693 に答える
1

Splitおよびの使用BitConverter

string rgb = "166, 103, 208";
var c = Color.FromArgb(BitConverter.ToInt32(rgb.Split(',')
    .Select(s => byte.Parse(s))
    .Reverse().Concat(new byte[] { 0 })
    .ToArray(), 0));
于 2012-11-02T16:21:49.143 に答える