private void pnlMap_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (e.Source is VertexVisual) { VertexVisual vv = e.Source as VertexVisual; WayPoint wp = vv.Node; wp.Number = int.Parse(vv.Number); if (lvWPItems.Items.Count != 0) { WayPoint lastWP = (lvWPItems.Items[lvWPItems.Items.Count - 1] as WayPoint); if (lastWP == wp) { tbInfo.Text = "Граф дорожной сети не поддерживает рефлексию"; return; } bool linked = false; foreach (var node in RoadGraph.GetNodesFrom(lastWP)) { if (node == wp) { linked = true; } } if (!linked) { tbInfo.Text = "Нет связи с предыдущей точкой"; return; } } lvWPItems.Items.Add(wp); ChangeCBFrom(); tbInfo.Text = "Маршрутная точка добавлена"; } }
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 DragMoved() { Point CurrentPosition = System.Windows.Input.Mouse.GetPosition(pnlMap); if (SourceElement is VertexVisual) { VertexVisual vv = SourceElement as VertexVisual; WayPoint prePoint = (WayPoint)vv.Node.Clone(); vv.Location = new Point((CurrentPosition.X - _positionOnSource.X) / Zoom, (CurrentPosition.Y - _positionOnSource.Y) / Zoom); for (int i = 0; i < EdgeVisualsList.Count; i++) { if (EdgeVisualsList[i].NodeFrom == vv.Node) { EdgeVisualsList[i].PathData.StartPoint = vv.Node.LocationPoint; } if (EdgeVisualsList[i].NodeTo == vv.Node) { if (EdgeVisualsList[i].PathData.Segments[0] is LineSegment) { (EdgeVisualsList[i].PathData.Segments[0] as LineSegment).Point = vv.Node.LocationPoint; } else if (EdgeVisualsList[i].PathData.Segments[0] is BezierSegment) { (EdgeVisualsList[i].PathData.Segments[0] as BezierSegment).Point3 = vv.Node.LocationPoint; } } EdgeVisualsList[i].InvalidateVisual(); } } else if (SourceElement is Ellipse) { Ellipse el = SourceElement as Ellipse; bool is_first = (bool)el.Tag; Point newLocation = new Point((CurrentPosition.X - _positionOnSource.X) / Zoom, (CurrentPosition.Y - _positionOnSource.Y) / Zoom); el.SetValue(Canvas.TopProperty, newLocation.Y * Zoom); el.SetValue(Canvas.LeftProperty, newLocation.X * Zoom); for (int i = 0; i < EdgeVisualsList.Count; i++) { if (EdgeVisualsList[i].IsSelected) { if (is_first) { (EdgeVisualsList[i].PathData.Segments[0] as BezierSegment).Point1 = newLocation; } else { (EdgeVisualsList[i].PathData.Segments[0] as BezierSegment).Point2 = newLocation; } EdgeVisualsList[i].InvalidateVisual(); return; } } } }
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 pnlMap_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { Point position = e.GetPosition(pnlMap); WayPoint wp = new WayPoint() { LocationPoint = new Point(position.X / Zoom, position.Y / Zoom) }; VertexVisual vv = new VertexVisual(wp) { Number = (VertexVisualsList.Count + 1).ToString(), 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); } }