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 に答える