📄 storage.cs
字号:
////////////////////////////////////
//// 读取数据文件 ////////////
//////////////////////////////////
using System;
using System.Xml;
using System.Drawing;
using System.Collections;
namespace short_path
{
/// <summary>
/// storage 的摘要说明。
/// </summary>
///
public class nodeInfo : Hashtable
{
public Point point, srcPoint;
public double w;
public Color color;
}
public class Storage
{
public Hashtable points = null;
public int maxx =0, maxy = 0;
public int minx = Int32.MaxValue, miny = Int32.MaxValue;
public string startpoint, endpoint;
public Storage()
{
startpoint = "50,160";
endpoint = "780,120";
}
public void readFile()
{
XmlTextReader xr = new XmlTextReader("CAMBRIDGE.DATA");
XmlDocument xd = new XmlDocument();
xd.Load(xr);
xr.Close();
XmlNode xfn = xd.FirstChild;
int x1,x2,y1,y2;
points = new Hashtable(30);
foreach(XmlNode xn in xfn.ChildNodes)
{
x1 = Int32.Parse(xn["x1"].InnerText);
y1 = Int32.Parse(xn["y1"].InnerText);
x2 = Int32.Parse(xn["x2"].InnerText);
y2 = Int32.Parse(xn["y2"].InnerText);
if(maxx < x1 || maxx < x2) maxx = x1>x2?x1:x2;
if(maxy < y1 || maxy < y2) maxy = y1>y2?y1:y2;
if(minx > x1 || minx > x2) minx = x1<x2?x1:x2;
if(miny > y1 || miny > y2) miny = y1<y1?y1:y2;
double dis = Math.Sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
if(points[x1.ToString()+','+y1.ToString()] == null)
{
nodeInfo n2 = new nodeInfo();
n2.w = dis;
n2.point.X = x2;
n2.point.Y = y2;
n2.color = Color.Pink;
nodeInfo n1 = new nodeInfo();
n1.point.X = x1;
n1.point.Y = y1;
n1.color = Color.Blue;
n1[x2.ToString()+','+y2.ToString()] = n2;
points[x1.ToString()+','+y1.ToString()] = n1;
}
else
{
nodeInfo n2 = new nodeInfo();
n2.w = dis;
n2.point.X = x2;
n2.point.Y = y2;
n2.color = Color.Pink;
((nodeInfo)(points[x1.ToString()+','+y1.ToString()]))[x2.ToString()+','+y2.ToString()] = n2;
}
if(points[x2.ToString()+','+y2.ToString()] == null)
{
nodeInfo n2 = new nodeInfo();
n2.w = dis;
n2.point.X = x1;
n2.point.Y = y1;
n2.color = Color.Pink;
nodeInfo n1 = new nodeInfo();
n1.point.X = x2;
n1.point.Y = y2;
n1.color = Color.Blue;
n1[x1.ToString()+','+y1.ToString()] = n2;
points[x2.ToString()+','+y2.ToString()] = n1;
}
else
{
nodeInfo n2 = new nodeInfo();
n2.w = dis;
n2.point.X = x1;
n2.point.Y = y1;
n2.color = Color.Pink;
((nodeInfo)(points[x2.ToString()+','+y2.ToString()]))[x1.ToString()+','+y1.ToString()] = n2;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -