2012-07-13 32 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