Пример #1
0
 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 = "Маршрутная точка добавлена";
     }
 }
Пример #2
0
 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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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;
                    }
                }
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
            }
        }
 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);
 }