P a*_*u l 20 .net xml-serialization
System.Drawing.Color对象显然不会使用XmlSerializer进行序列化.xml序列化颜色的最佳方法是什么?
Ben*_*ter 32
最简单的方法是使用它的核心:
String HtmlColor = System.Drawing.ColorTranslator.ToHtml(MyColorInstance);
Run Code Online (Sandbox Code Playgroud)
它只会将颜色转换为HTML使用的标准十六进制字符串,这很容易反序列化:
Color MyColor = System.Drawing.ColorTranslator.FromHtml(MyColorString);
Run Code Online (Sandbox Code Playgroud)
这样你只需要使用沼泽标准字符串......
P a*_*u l 17
最终工作版本:
Color clrGrid = Color.FromArgb(0, 0, 0);
[XmlIgnore]
public Color ClrGrid
{
get { return clrGrid; }
set { clrGrid = value; }
}
[XmlElement("ClrGrid")]
public string ClrGridHtml
{
get { return ColorTranslator.ToHtml(clrGrid); }
set { ClrGrid = ColorTranslator.FromHtml(value); }
}
Run Code Online (Sandbox Code Playgroud)
nie*_*ras 13
我们用这个:
[Serializable]
public struct ColorEx
{
private Color m_color;
public ColorEx(Color color)
{
m_color = color;
}
[XmlIgnore]
public Color Color
{ get { return m_color; } set { m_color = value; } }
[XmlAttribute]
public string ColorHtml
{
get { return ColorTranslator.ToHtml(this.Color); }
set { this.Color = ColorTranslator.FromHtml(value); } }
public static implicit operator Color(ColorEx colorEx)
{
return colorEx.Color;
}
public static implicit operator ColorEx(Color color)
{
return new ColorEx(color);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11974 次 |
| 最近记录: |