justify">}
r.Close ();
return false;
}
. Метод LoadResources завантажує зображення вершин із заданих файлів картинок формату png :
public void LoadResources (string nodeImage, string nodeOkImage)
{
imgNode=Image.FromFile (nodeImage);
imgOkNode=Image.FromFile (nodeOkImage);
imageCenter=(int) Math.Round ((float) imgOkNode.Width/2);
font=new Font ( Times New Roman raquo ;, 14, FontStyle.Bold);
}
. Метод NodeAdd додає вершину з вказаними координатами і видимістю в граф:
public int NodeAdd (int x, int y, bool isValide=true)
{
nodes.Add (new GraphNode (x, y, isValide));
return nodes.Count - 1;
}
. Метод NodeGetID повертає індекс вершини, що знаходиться під курсором миші, або - 1, якщо під курсором немає вершин:
public int NodeGetID (int mouseX, int mouseY)
{
for (int i=0; i lt; nodes.Count; i ++)
{
int nX=nodes [i] .GetPositionX () - 16;
int nY=nodes [i] .GetPositionY () - 16;
if (mouseX gt;=nX amp; amp; mouseX lt;=nX + imgOkNode.Width)
if (mouseY gt;=nY amp; amp; mouseY lt;=nY + imgOkNode.Height)
return i;
}
return - 1;
}
. Методи NodeGetX і NodeGetY повертає x і y координати зазначеної вершини відповідно:
public int NodeGetX (int id)
{
if (id lt; nodes.Count amp; amp; nodes.Count gt; - 1)
{
return nodes [id] .GetPositionX ();
}
return - 1;
}
public int NodeGetY (int id)
{
if (id lt; nodes.Count amp; amp; nodes.Count gt; - 1)
{
return nodes [id] .GetPositionY ();
}
return - 1;
}
. Метод NodeRemove видаляє зазначену вершину з графа (також, видаляє всі ребра, пов'язані з вершиною):
public bool NodeRemove (int id)
{
if (nodes.Count gt; id amp; amp; nodes.Count gt; - 1)
{
List lt; int gt; toRemove=new List lt; int gt; ();
for (int i=0; i lt; edges.Count; i ++)
{
int node1, node2;
edges [i] .GetLinkedNodes (out node1, out node2);
if (node1 == id || node2 == id)
toRemove.Add (i);
}
while (toRemove.Count gt; 0)
{
EdgeRemove (toRemove [0]);
toRemove.RemoveAt (0);
for (int i=0; i lt; toRemove.Count; i ++)
{
toRemove [i] -=1;
}
}
nodes [id] .Remove ();
return true;
}
return false;
}
. Метод NodeSetPosition встановлює координати заданої вершини:
public bool NodeSetPosition (int id, int x, int y)
{
if (id lt; nodes.Count amp; amp; nodes.Count gt; - 1)
{
nodes [id] .SetPosition (x, y);
return true;
}
return false;
}
10. Метод Save зберігає граф у файл з заданим ім'ям:
public void Save (string filename)
{
FileStream fs=new FileStream (filename, FileMode.Create, FileAccess.Write);
BinaryWriter w=new BinaryWriter (fs);
w.Write (signature);
w.Write (nodes.Count);