1

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

ID X-coordinate Y-coordinate

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

4

1 回答 1

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"])));
  }
}

结果:

在此处输入图像描述

于 2012-07-13T13:02:22.613 回答