【问题标题】:Load and save Color value加载和保存颜色值
【发布时间】:2014-04-21 15:59:14
【问题描述】:

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

Color color = Color.Black;
stream.WriteLine(color.ToString());

那我猜它必须以某种方式转换,无法弄清楚。 颜色 ???流.ReadLine();

【问题讨论】:

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

标签: c# colors xna


【解决方案1】:

如果您使用的是文本存储介质,请使用 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) 或已知颜色名称 (Black) 的文本字符串。该方法会根据您的 Color 对象是已知的还是自定义 RGB 自动选择。无论哪种方式,它都应该很好地来回翻译。

【讨论】:

    【解决方案2】:

    您正在尝试做的是序列化/反序列化。你应该调查一下。 但是您可以为每种颜色保存一行,并将每一行设为分号分隔的 RGB 值列表,这几乎就是您现在正在做的事情。

    然后当你阅读你的行时,你将不得不用类似的东西反序列化它

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多