private void pnlMap_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.Source is VertexVisual) { VertexVisual vv = e.Source as VertexVisual; _isDown = true; SourceElement = vv; _startPoint = e.GetPosition(pnlMap);//new Point(e.GetPosition(pnlMap).X / Zoom, e.GetPosition(pnlMap).Y / Zoom); _positionOnSource = new Point(_startPoint.X - vv.Node.LocationPoint.X * Zoom, _startPoint.Y - vv.Node.LocationPoint.Y * Zoom); pnlMap.CaptureMouse(); e.Handled = true; } else if (e.Source is EdgeVisual) { EdgeVisual ev = e.Source as EdgeVisual; _isDown = true; SourceElement = ev; e.Handled = true; } else if (e.Source is Ellipse) { _isDown = true; SourceElement = e.Source; e.Handled = true; } }
public VehicleWayPointsConfigWindow(Graph<WayPoint, PathFigure> roadGraph) { VertexVisualsList = new List<VertexVisual>(); EdgeVisualsList = new List<EdgeVisual>(); RoadGraph = roadGraph; InitializeComponent(); scena = (Application.Current.MainWindow as MainWindow).Scena; Zoom = 4.0; PaintMap(); lblMapSize.Content = string.Format("{0} x {1}", Math.Round(pnlMap.Width / Zoom), Math.Round(pnlMap.Height / Zoom)); foreach (var edge in RoadGraph.Edges) { EdgeVisual ev = new EdgeVisual(edge.Data) { NodeFrom = edge.Start, NodeTo = edge.End, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Add(ev); } foreach (var node in RoadGraph.Nodes) { int in_count = 0, out_count = 0; foreach (var edge in RoadGraph.GetEdgesTo(node)) { in_count++; } foreach (var edge in RoadGraph.GetEdgesFrom(node)) { out_count++; } VertexVisual vv = new VertexVisual(node) { Number = (VertexVisualsList.Count + 1).ToString(), InCount = in_count, OutCount = out_count, Zoom = Zoom }; vv.Node.Number = int.Parse(vv.Number); if (in_count != 0) { cbTo.Items.Add(vv.Node); } if (out_count != 0) { cbFrom.Items.Add(vv.Node); } VertexVisualsList.Add(vv); pnlMap.Children.Add(vv); } }
public VehicleWayPointsConfigWindow(Graph <WayPoint, PathFigure> roadGraph) { VertexVisualsList = new List <VertexVisual>(); EdgeVisualsList = new List <EdgeVisual>(); RoadGraph = roadGraph; InitializeComponent(); scena = (Application.Current.MainWindow as MainWindow).Scena; Zoom = 4.0; PaintMap(); lblMapSize.Content = string.Format("{0} x {1}", Math.Round(pnlMap.Width / Zoom), Math.Round(pnlMap.Height / Zoom)); foreach (var edge in RoadGraph.Edges) { EdgeVisual ev = new EdgeVisual(edge.Data) { NodeFrom = edge.Start, NodeTo = edge.End, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Add(ev); } foreach (var node in RoadGraph.Nodes) { int in_count = 0, out_count = 0; foreach (var edge in RoadGraph.GetEdgesTo(node)) { in_count++; } foreach (var edge in RoadGraph.GetEdgesFrom(node)) { out_count++; } VertexVisual vv = new VertexVisual(node) { Number = (VertexVisualsList.Count + 1).ToString(), InCount = in_count, OutCount = out_count, Zoom = Zoom }; vv.Node.Number = int.Parse(vv.Number); if (in_count != 0) { cbTo.Items.Add(vv.Node); } if (out_count != 0) { cbFrom.Items.Add(vv.Node); } VertexVisualsList.Add(vv); pnlMap.Children.Add(vv); } }
private void btnAddEdge_Click(object sender, RoutedEventArgs e) { int from, to; if (!int.TryParse(tbStart.Text, out from) || !int.TryParse(tbFinish.Text, out to)) { lblErrorInfo.Content = "Укажите номер вершины"; return; } try { WayPoint NodeFrom, NodeTo; NodeFrom = VertexVisualsList[VertexVisualsList.FindIndex(delegate(VertexVisual vv){ return(int.Parse(vv.Number) == from); })].Node; NodeTo = VertexVisualsList[VertexVisualsList.FindIndex(delegate(VertexVisual vv){ return(int.Parse(vv.Number) == to); })].Node; if (EdgeVisualsList.FindIndex(delegate(EdgeVisual obj) { return(obj.NodeFrom == NodeFrom && obj.NodeTo == NodeTo); }) == -1) { EdgeVisual ev = new EdgeVisual(new PathFigure(NodeFrom.LocationPoint, new List <PathSegment>() { new LineSegment(NodeTo.LocationPoint, true) }, false)) { NodeFrom = NodeFrom, NodeTo = NodeTo, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Insert(0, ev); foreach (var vertex in VertexVisualsList.FindAll(delegate(VertexVisual vv) { return(vv.Node == NodeFrom); })) { vertex.OutCount++; } foreach (var vertex in VertexVisualsList.FindAll(delegate(VertexVisual vv) { return(vv.Node == NodeTo); })) { vertex.InCount++; } } else { lblErrorInfo.Content = "Такое ребро уже существует"; return; } } catch (IndexOutOfRangeException ee) { lblErrorInfo.Content = "Одна из вершин не найдена"; return; } catch (ArgumentOutOfRangeException ee) { lblErrorInfo.Content = "Одна из вершин не найдена"; return; } lblErrorInfo.Content = "Ребро добавлено"; }
public wndRoadGraphConfig(Graph<WayPoint, PathFigure> roadGraph) { VertexVisualsList = new List<VertexVisual>(); EdgeVisualsList = new List<EdgeVisual>(); RoadGraph = roadGraph; InitializeComponent(); scena = (Application.Current.MainWindow as MainWindow).Scena; for (int i = 0; i < scena.ServicesList.Count; i++) { cbSevice.Items.Add(scena.ServicesList[i]); } Zoom = 4.0; PaintMap(); foreach (var edge in RoadGraph.Edges) { EdgeVisual ev = new EdgeVisual(edge.Data) { NodeFrom = edge.Start, NodeTo = edge.End, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Add(ev); } foreach (var node in RoadGraph.Nodes) { int in_count = 0, out_count = 0; foreach (var edge in RoadGraph.GetEdgesTo(node)) { in_count++; } foreach (var edge in RoadGraph.GetEdgesFrom(node)) { out_count++; } VertexVisual vv = new VertexVisual(node) { Number = (VertexVisualsList.Count + 1).ToString(), InCount = in_count, OutCount = out_count, Zoom = Zoom }; VertexVisualsList.Add(vv); pnlMap.Children.Add(vv); } }
public wndRoadGraphConfig(Graph <WayPoint, PathFigure> roadGraph) { VertexVisualsList = new List <VertexVisual>(); EdgeVisualsList = new List <EdgeVisual>(); RoadGraph = roadGraph; InitializeComponent(); scena = (Application.Current.MainWindow as MainWindow).Scena; for (int i = 0; i < scena.ServicesList.Count; i++) { cbSevice.Items.Add(scena.ServicesList[i]); } Zoom = 4.0; PaintMap(); foreach (var edge in RoadGraph.Edges) { EdgeVisual ev = new EdgeVisual(edge.Data) { NodeFrom = edge.Start, NodeTo = edge.End, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Add(ev); } foreach (var node in RoadGraph.Nodes) { int in_count = 0, out_count = 0; foreach (var edge in RoadGraph.GetEdgesTo(node)) { in_count++; } foreach (var edge in RoadGraph.GetEdgesFrom(node)) { out_count++; } VertexVisual vv = new VertexVisual(node) { Number = (VertexVisualsList.Count + 1).ToString(), InCount = in_count, OutCount = out_count, Zoom = Zoom }; VertexVisualsList.Add(vv); pnlMap.Children.Add(vv); } }
private void btnAddEdge_Click(object sender, RoutedEventArgs e) { int from, to; if (!int.TryParse(tbStart.Text, out from) || !int.TryParse(tbFinish.Text, out to)) { lblErrorInfo.Content = "Укажите номер вершины"; return; } try { WayPoint NodeFrom, NodeTo; NodeFrom = VertexVisualsList[VertexVisualsList.FindIndex(delegate (VertexVisual vv){return int.Parse(vv.Number) == from;})].Node; NodeTo = VertexVisualsList[VertexVisualsList.FindIndex(delegate (VertexVisual vv){return int.Parse(vv.Number) == to;})].Node; if (EdgeVisualsList.FindIndex(delegate(EdgeVisual obj) { return obj.NodeFrom == NodeFrom && obj.NodeTo == NodeTo; }) == -1) { EdgeVisual ev = new EdgeVisual(new PathFigure(NodeFrom.LocationPoint, new List<PathSegment>() { new LineSegment(NodeTo.LocationPoint, true) }, false)) { NodeFrom = NodeFrom, NodeTo = NodeTo, Zoom = Zoom }; EdgeVisualsList.Add(ev); pnlMap.Children.Insert(0, ev); foreach (var vertex in VertexVisualsList.FindAll(delegate(VertexVisual vv) { return vv.Node == NodeFrom; })) { vertex.OutCount++; } foreach (var vertex in VertexVisualsList.FindAll(delegate(VertexVisual vv) { return vv.Node == NodeTo; })) { vertex.InCount++; } } else { lblErrorInfo.Content = "Такое ребро уже существует"; return; } } catch (IndexOutOfRangeException ee) { lblErrorInfo.Content = "Одна из вершин не найдена"; return; } catch (ArgumentOutOfRangeException ee) { lblErrorInfo.Content = "Одна из вершин не найдена"; return; } lblErrorInfo.Content = "Ребро добавлено"; }