この形式のデータテーブルがあります
ID X-coordinate Y-coordinate
そして、ノードに ID を持ち、X、Y 位置に基づいて隣接する ID に接続する線を持つグリッドを作成したいと考えています。これを行うことに関する提案はありますが、私はこれまで描画を行ったことがありません。ありがとう
パネルをフォームに配置します。
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"])));
}
}
そして結果: