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(); }
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); }
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); }
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); }