Beispiel #1
0
        private void SetGraph(GraphEmbedding graphEmbedding)
        {
            PauseButton_Click(null, null);
            this.RunAlgorithmButton.IsEnabled = true;
            this.StaticGraphCanvas.Children.Clear();
            this.GraphVisual = GraphVisual.Create(StaticGraphCanvas, NodeBrush, NumBrush, LineBrush, PenLineCap);
            foreach (var node in graphEmbedding.Graph.Nodes)
            {
                GraphVisual.AddNode(node, graphEmbedding.Embedding[node]);
            }
            foreach (var edge in graphEmbedding.Graph.Edges)
            {
                GraphVisual.AddEdge(edge);
            }
            var scaleViewStackPanel = new StackPanel();

            this.ScaleViewViewer.Content = scaleViewStackPanel;
            WeightsHandler.Create(scaleViewStackPanel, NodeBrush, LineBrush, GraphVisual.NodeWidth,
                                  GraphVisual.MinLineThickness,
                                  GraphVisual.MaxLineThickness, GraphVisual.MinWeight, GraphVisual.MaxWeight);
            var edges = EdgesHandler.Create(this.WeightsViewer);

            foreach (var edge in graphEmbedding.Graph.Edges)
            {
                edges.AddEdge(edge, active: false);
            }
        }
Beispiel #2
0
 public override StateController LeftMouseUpAt(Point point)
 {
     GraphVisual.Canvas.Children.Remove(WorkingLine);
     var(closestEllipse, distance) = GraphVisual.ClosestEllipseFrom(point);
     if (distance < GraphVisual.NodeWidth && closestEllipse != StartingEllipse)
     {
         var startingNode = GraphVisual.Nodes.GetKeyOf(StartingEllipse, ReferenceEquals);
         var endingNode   = GraphVisual.Nodes.GetKeyOf(closestEllipse, ReferenceEquals);
         var edge         = Edge.Create(startingNode, endingNode, Weight);
         if (!GraphVisual.Edges.ContainsKey(edge))
         {
             GraphVisual.AddEdge(edge);
         }
     }
     return(new IdleState(GraphVisual));
 }