Самый простой метод использует это в, он - основа:
String HtmlColor = System.Drawing.ColorTranslator.ToHtml(MyColorInstance);
Это просто преобразует то, что цвет к стандартной шестнадцатеричной строке, используемой HTML, который так же, как легко десериализовывается с помощью:
Color MyColor = System.Drawing.ColorTranslator.FromHtml(MyColorString);
Тот путь Вы просто работаете со строками стандарта трясины...
Вы могли записать простой класс обертки для Цвета, который выставляет значения ARGB как свойства. Вы могли перевести в использование цветов из/в преобразования ARGB (см. документы ). Что-то как:
[Serializable]
public class ColorWrapper
{
private Color color;
public ColorWrapper (Color color)
{
this.color = color;
}
public ColorWrapper()
{
// default constructor for serialization
}
public int Argb
{
get
{
return color.ToARGB();
}
set
{
color = Color.FromARGB();
}
}
}
, Вероятно, хочу средство доступа для цвета также!
Преимущество этого - то, что класс может использоваться во всех местах, необходимо сериализировать цвета. Если Вы хотите сделать читаемое XML (а не произвольное целое число ARGB), Вы могли использовать для методов HTML, как описано balabaster.
Заключительная рабочая версия:
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); }
}
Мы используем следующее:
[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);
}
}