Beispiel #1
0
        public GraphEditor()
        {
            InitializeComponent();
            this.SnapsToDevicePixels = true;
            canvas.IsHitTestVisible = true;
            IsHitTestVisible = true;

            canvas.Background = new SolidColorBrush(Colors.WhiteSmoke);

            canvas.MouseLeftButtonUp += new MouseButtonEventHandler(GraphEditor_MouseRightButtonUp);

            g = new Graph
                    {
                    };
            Random r = new Random();
            for (int i = 0; i < 8; ++i)
            {
                g.Nodes.Add(new Graph.Node
                                {
                                    Position = new Point(r.Next(0, 700), r.Next(0, 600)),
                                    Size = new Size(42, 42)
                                });
            }
            for (int i = 0; i < 17; ++i)
            {
                g.Edges.Add(new Graph.Edge { From = g.Nodes[r.Next(0, 8)], To = g.Nodes[r.Next(0,8)] });
            }

            int k = 0;
            foreach (var node in g.Nodes)
            {
                AddNode(node);
            }
            foreach (var edge in g.Edges)
            {
                AddEdge(edge);
            }

            RedrawEdges();
        }
Beispiel #2
0
        private void AddEdge(Graph.Edge edge)
        {
            Line L = new Line { X1 = edge.From.Position.X, Y1 = edge.From.Position.Y, X2 = edge.To.Position.X, Y2 = edge.To.Position.Y };
            ConnectNodes(edge, L);
            L.Stroke = new SolidColorBrush(Colors.Black);
            L.StrokeThickness = 1f;
            canvas.Children.Add(L);
            L.MouseEnter += new MouseEventHandler(L_MouseEnter);
            L.MouseLeave += new MouseEventHandler(L_MouseLeave);

            edgesMap.Add(edge, L);
        }
Beispiel #3
0
 private void ConnectNodes(Graph.Edge edge, Line L)
 {
     var firstNodeVisual = nodesMap[edge.From];
     var secondNodeVisual = nodesMap[edge.To];
     var firstCenter = GetCenter(firstNodeVisual);
     var secondCenter = GetCenter(secondNodeVisual);
     L.X1 = firstCenter.X;
     L.Y1 = firstCenter.Y;
     L.X2 = secondCenter.X;
     L.Y2 = secondCenter.Y;
     //L. = new Thickness(10);
     Canvas.SetZIndex(L, -1);
 }
Beispiel #4
0
        private void AddNode(Graph.Node node)
        {
            VapeTeam.Psimulex.Core.Types.String s = new VapeTeam.Psimulex.Core.Types.String(rnd.Next(0, 100).ToString());
            var graphics = new Simulex.Graphics.Components.ScalarGraphics(s);
            graphics.IsHitTestVisible = true;

            Border b = new Border { Child = graphics, CornerRadius = new CornerRadius(10.0) };
            b.BorderBrush = new SolidColorBrush(Colors.LightBlue);
            b.Background = new LinearGradientBrush(Color.FromArgb(0xFF, 0x8B, 0xC4, 0xE0), Color.FromArgb(0xFF, 0xEF, 0xFA, 0xFF), 90);
            b.BorderBrush = new SolidColorBrush(Colors.Black);
            b.BorderThickness = new Thickness(0.5f);
            b.IsHitTestVisible = false;
            b.Tag = node;
            b.Opacity = 1.0;

            b.MinWidth = node.Size.Width;
            b.MinHeight = node.Size.Height;

            b.MouseEnter += new MouseEventHandler(b_MouseEnter);
            b.MouseLeave += new MouseEventHandler(b_MouseLeave);

            var eff = new System.Windows.Media.Effects.DropShadowEffect { BlurRadius = 5, Color = Colors.Black, ShadowDepth = 1, Opacity = 0.5 };
            b.Effect = eff;

            var uielem = AddElement(b, node.Position);
            nodesMap.Add(node, uielem);
            //Canvas.SetLeft(b, node.Position.X);
            //Canvas.SetTop(b, node.Position.Y);
        }