我想知道.Net Framework中是否已有一个方法用于从包含RGB三元组的字符串中实例化Color值,如下所示:
“166,103,208”
如果Color存储在我的应用程序的app.config中,它将存储为字符串。我想知道.Net如果可能的话,如何将这些字符串值反序列化为Colors。
答案 0 :(得分: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]);
答案 1 :(得分:2)
(As of request,我将此作为答案)
如何使用ColorTranslator
class而不是将其写为三个字节?
使用ToHtml
和FromHtml
methods以HTML格式存储并以HTML格式而不是字节格式回读,您可以使用内置的内容,尽管根据定义它不是“序列化”
一个例子可能是:
// "Deserialize" from a given string.
Color myColor = ColorTranslator.FromHtml("#45A3C7");
// "Serialize" to a string.
string htmlColor = ColorTranslator.ToHtml(Color.Red);
答案 2 :(得分: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));