从datatable创建网格

时间:2012-07-13 12:43:42

标签: c# forms datatable drawing

我有一个这种格式的数据表

ID X-coordinate Y-coordinate

我想创建一个网格,在节点上有ID,并根据X,Y位置连接到相邻ID。关于这样做的任何建议,我以前从未做过任何绘图。感谢

1 个答案:

答案 0 :(得分: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;
}

这是绘画方法:

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