|
@@ -287,14 +287,42 @@ namespace GraphDrawer
|
|
|
for (int k = 0; k < EdgeArray.edge.Length; k++)
|
|
|
{
|
|
|
var edge = EdgeArray.edge[k];
|
|
|
- if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
|
|
|
- if (edge.Weight > 0)
|
|
|
- matrix[i, j] = (int)edge.Weight;
|
|
|
- else
|
|
|
- matrix[i, j] = 1;
|
|
|
- else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
|
|
|
- if (edge.Weight > 0)
|
|
|
- matrix[i, j] = (int)edge.Weight;
|
|
|
+ if (edge.IsFocused)
|
|
|
+ {
|
|
|
+ if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
|
|
|
+ if (edge.Weight > 0)
|
|
|
+ matrix[i, j] = (int)edge.Weight;
|
|
|
+ else
|
|
|
+ matrix[i, j] = 1;
|
|
|
+ else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
|
|
|
+ if (edge.Weight > 0)
|
|
|
+ matrix[i, j] = (int)edge.Weight;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
|
|
|
+ if (edge.Weight > 0)
|
|
|
+ {
|
|
|
+ matrix[i, j] = (int)edge.Weight;
|
|
|
+ InvertElement(matrix, i, j);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ matrix[i, j] = 1;
|
|
|
+ InvertElement(matrix, i, j);
|
|
|
+ }
|
|
|
+ else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
|
|
|
+ if (edge.Weight > 0)
|
|
|
+ {
|
|
|
+ matrix[i, j] = (int)edge.Weight;
|
|
|
+ InvertElement(matrix, i, j);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ matrix[i, j] = 1;
|
|
|
+ InvertElement(matrix, i, j);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -304,11 +332,7 @@ namespace GraphDrawer
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for (int i = 0; i < length; i++)
|
|
|
- for (int j = 0; j < length; j++)
|
|
|
- matrix[i, j] = matrix[j, i];
|
|
|
-
|
|
|
- MatrixOutput output = new MatrixOutput(matrix);
|
|
|
+ var output = new MatrixOutput(matrix);
|
|
|
output.Show();
|
|
|
}
|
|
|
|
|
@@ -351,6 +375,12 @@ namespace GraphDrawer
|
|
|
matrix.Show();
|
|
|
Close();
|
|
|
}
|
|
|
+
|
|
|
+ public int[,] InvertElement(int[,] matrix, int indexX, int indexY)
|
|
|
+ {
|
|
|
+ matrix[indexY, indexX] = matrix[indexX, indexY];
|
|
|
+ return matrix;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public static class VertexArray
|
|
@@ -432,10 +462,10 @@ namespace GraphDrawer
|
|
|
edge[edgeCount-1] = new Edge(line[edgeCount-1], v1, v2);
|
|
|
line[edgeCount - 1].Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 0));
|
|
|
line[edgeCount - 1].StrokeThickness = 4;
|
|
|
- line[edgeCount - 1].X1 = v1.X;
|
|
|
- line[edgeCount - 1].Y1 = v1.Y;
|
|
|
- line[edgeCount - 1].X2 = v2.X;
|
|
|
- line[edgeCount - 1].Y2 = v2.Y;
|
|
|
+ line[edgeCount - 1].X1 = v1.CenterByX;
|
|
|
+ line[edgeCount - 1].Y1 = v1.CenterByY;
|
|
|
+ line[edgeCount - 1].X2 = v2.CenterByX;
|
|
|
+ line[edgeCount - 1].Y2 = v2.CenterByY;
|
|
|
Panel.SetZIndex(line[edgeCount-1], -5);
|
|
|
canvas.Children.Add(line[edgeCount - 1]);
|
|
|
}
|
|
@@ -449,11 +479,11 @@ namespace GraphDrawer
|
|
|
line[edgeCount - 1] = new Line
|
|
|
{
|
|
|
StrokeThickness = 2,
|
|
|
- X1 = v1.X,
|
|
|
- Y1 = v1.Y,
|
|
|
+ X1 = v1.CenterByX,
|
|
|
+ Y1 = v1.CenterByY,
|
|
|
Stroke = new SolidColorBrush(lineColor),
|
|
|
- Y2 = v2.Y,
|
|
|
- X2 = v2.X
|
|
|
+ Y2 = v2.CenterByY,
|
|
|
+ X2 = v2.CenterByX
|
|
|
};
|
|
|
edge[edgeCount - 1] = new Edge(line[edgeCount - 1], v1, v2) {Weight = weight};
|
|
|
|
|
@@ -506,10 +536,10 @@ namespace GraphDrawer
|
|
|
edge[edgeCount - 1] = new Edge(ArrowLine[edgeCount - 1], v1, v2);
|
|
|
ArrowLine[edgeCount - 1].Stroke = new SolidColorBrush(lineColor);
|
|
|
ArrowLine[edgeCount - 1].StrokeThickness = 2;
|
|
|
- ArrowLine[edgeCount - 1].X1 = v1.CenterByX - 5;
|
|
|
- ArrowLine[edgeCount - 1].Y1 = v1.CenterByY - 5;
|
|
|
- ArrowLine[edgeCount - 1].X2 = v2.CenterByX - 2;
|
|
|
- ArrowLine[edgeCount - 1].Y2 = v2.CenterByY - 3;
|
|
|
+ ArrowLine[edgeCount - 1].X1 = v1.CenterByX;
|
|
|
+ ArrowLine[edgeCount - 1].Y1 = v1.CenterByY;
|
|
|
+ ArrowLine[edgeCount - 1].X2 = v2.CenterByX;
|
|
|
+ ArrowLine[edgeCount - 1].Y2 = v2.CenterByY;
|
|
|
edge[edgeCount - 1].Weight = Weight;
|
|
|
|
|
|
if (Weight > 0)
|