2016-12-14 45 views
0

我嘗試構建應該在表單對象上繪製圖表的類(對於更大的個人項目)。我做的最後一件事就是將我的「糟糕的」自制代碼放入課堂並清理它,但後來我意識到,在使用GDI +時,我經常需要處理許多不同的筆和顏色。現在是否有可能構建一個擁有「樣式表」的類,我可以輕鬆地將其存儲在.txt或.xml文件中,然後讀入並使用?有人有一些想法如何做到這一點? Felix如何在數據可視化類中實現樣式表

+1

沒有GDI +的樣式表。它只是一個程序化API。您必須編寫創建所需繪圖對象的代碼。 –

回答

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屬性。

+0

我會試試看!可能需要一點時間,謝謝你幫助我! – 97hilfel

相關問題