如何在数据可视化类中实现样式表

时间:2016-12-14 20:22:42

标签: c# winforms visual-studio gdi+

我尝试构建一个类(用于更大的个人项目),该类应该在表单对象上绘制图表。我做的最后一件事就是把我的"坏" flast将代码编写成一个类并清理它,但后来我意识到在使用GDI +时我经常需要处理许多不同的笔和颜色。现在是否有可能建立一个持有"样式表的班级"我可以轻松地存储在.txt或.xml文件中,然后读入并使用?有人有一些想法如何做到这一点? 菲利克斯

1 个答案:

答案 0 :(得分:1)

创建自己的类来存储颜色和笔。这样的事情。

public class Style
{
    public List<Color> Colors { get; set; }
    public List<Pen> Pens { get; set; }

    public void Save(string filename)
    {
        var xml = new XElement("style",
            this.Colors.Select(c => new XElement("color", c.ToArgb())),
            this.Pens.Select(p => new XElement("pen",
                new XElement("color", p.Color.ToArgb()),
                new XElement("width", p.Width))));

        xml.Save(filename);
    }

    public void Load(string filename)
    {
        var xml = XElement.Load(filename);

        this.Colors = xml.Elements("color")
            .Select(c => Color.FromArgb((int)c))
            .ToList();

        this.Pens = xml.Elements("pen")
            .Select(p => new Pen(
                Color.FromArgb((int)p.Element("color")),
                (float)p.Element("width")))
            .ToList();
    }
}

现在您可以轻松地将其保存到xml文件并回读。

var style = new Style();

style.Colors = new List<Color> {
    Color.FromArgb(10, 20, 30),
    Color.FromArgb(15, 25, 35)
};

style.Pens = new List<Pen> {
    new Pen(Color.Red, 5f),
    new Pen(Color.Green, 4f)
};

style.Save("style.xml");

var style2 = new Style();
style2.Load("style.xml");

添加代码以读取/写入其他Pen属性。