C# 加载并保存颜色值

C# 加载并保存颜色值,c#,colors,xna,C#,Colors,Xna,我正在尝试使用ReadLine从文本文件加载颜色值。使用WriteLine保存时,它看起来是这样的[Color:R=53,G=40,B=121,A=255,PackedValue=4286130229] Color color = Color.Black; stream.WriteLine(color.ToString()); 那么我想它一定要转换,我想不出来。 颜色stream.ReadLine() 您试图做的是序列化/反序列化。你应该调查一下。 但是你可以为你的每一种颜色保存一行,并使每一

我正在尝试使用ReadLine从文本文件加载颜色值。使用WriteLine保存时,它看起来是这样的[Color:R=53,G=40,B=121,A=255,PackedValue=4286130229]

Color color = Color.Black;
stream.WriteLine(color.ToString());
那么我想它一定要转换,我想不出来。
颜色stream.ReadLine()

您试图做的是序列化/反序列化。你应该调查一下。 但是你可以为你的每一种颜色保存一行,并使每一行成为一个以分号分隔的RGB值列表,这几乎就是你现在所做的

然后,当你阅读你的行时,你必须用类似的东西来反序列化它

var colorStr = stream.ReadLine().Split(',');
Color clr = Color.FromArgb(colorStr[0],colorStr[1],colorStr[2]);

如果您使用的是文本存储介质,请使用HTML编码:

Color myColor = Color.FromArgb(255, 255, 50, 25);
String strColor = ColorTranslator.ToHtml(myColor);
//write strColor to text file...
String strColor = "";  //read in the color from text file
Color c = ColorTranslator.FromHtml(strColor);

这样,您将存储一个文本字符串,该字符串可以是十六进制(#FFFFFF)或已知颜色名称(黑色)。该方法根据
颜色
对象是已知对象还是自定义RGB自动进行选择。无论哪种方式,它都应该能够很好地来回转换。

颜色类型具有[TypeConverter]属性。使用TypeDescriptor.GetConverter(typeof(Color))。现在您有了一个转换器,它可以通过ConvertToString()和ConvertFromString()方法在字符串和颜色之间来回转换。