2012-07-13 67 views
1

格我有一個DataTable這種格式創建數據表

ID X-coordinate Y-coordinate 

我想創建一個具有在節點的ID,並且具有連接到基於了他們的X,Y位置相鄰的ID線的網格。任何關於這樣做的建議,我從來沒有做過任何繪圖。由於

+0

給出一些示例座標,並給一些簡單的想法你對這些座標有什麼期望? – 2012-07-13 12:52:12

+0

可以說,我們做 1 0 0, 2 0 -1,所以我們得到的L形狀 – Badmiral 2012-07-13 12:53:14

+0

使用Graphics.DrawLine(blackPen,X1,Y1,X2,Y2)的方法。 – 2012-07-13 12:56:49

回答

2

在窗體上放置一個面板:

private DataTable dt; 

public Form1() { 
    InitializeComponent(); 

    dt = new DataTable(); 
    dt.Columns.Add("ID", typeof(int)); 
    dt.Columns.Add("XCord", typeof(int)); 
    dt.Columns.Add("YCord", typeof(int)); 

    DataRow dr1 = dt.NewRow(); 
    dr1["ID"] = 1; 
    dr1["XCord"] = 10; 
    dr1["YCord"] = 10; 
    dt.Rows.Add(dr1); 

    DataRow dr2 = dt.NewRow(); 
    dr2["ID"] = 2; 
    dr2["XCord"] = 10; 
    dr2["YCord"] = 50; 
    dt.Rows.Add(dr2); 

    DataRow dr3 = dt.NewRow(); 
    dr3["ID"] = 3; 
    dr3["XCord"] = 25; 
    dr3["YCord"] = 50; 
    dt.Rows.Add(dr3); 

    panel1.Paint += panel1_Paint; 
} 

下面是paint方法:

private void panel1_Paint(object sender, PaintEventArgs e) { 
    e.Graphics.Clear(Color.White); 

    for (int i = 1; i < dt.Rows.Count; i++) { 
    e.Graphics.DrawLine(Pens.Red, 
         new Point(Convert.ToInt32(dt.Rows[i - 1]["XCord"]), Convert.ToInt32(dt.Rows[i - 1]["YCord"])), 
         new Point(Convert.ToInt32(dt.Rows[i]["XCord"]), Convert.ToInt32(dt.Rows[i]["YCord"]))); 
    } 
} 

,結果:

enter image description here