예제 #1
0
        private void Cmd_DeleteStation(object sender, ExecutedRoutedEventArgs e)
        {
            StationIconElement arriver  = (StationIconElement)e.OriginalSource;
            EllipseGeometry    geometry = (EllipseGeometry)arriver.Icon;
            Point     pos  = geometry.Center;
            Thickness ness = GetThickness(pos, NoneList);

            YesList.Add(ness);
            NoneList.Remove(ness);
            Canvas.Children.Remove(arriver);
            ContextMenuClosed = true;
        }
예제 #2
0
        private void Cmd_DeleteCircuit(object sender, ExecutedRoutedEventArgs e)
        {
            CircuitIconElement arriver  = (CircuitIconElement)e.OriginalSource;
            LineGeometry       geometry = (LineGeometry)arriver.Icon;
            Thickness          start    = GetThickness(geometry.StartPoint, NoneList);
            Thickness          end      = GetThickness(geometry.EndPoint, NoneList);

            if (start.Left < end.Left)
            {
                if (start.Top < end.Top)
                {
                    var vpl = NoneListCirc.Where(a => (a.Left >= start.Left) && (a.Left <= end.Left) &&
                                                 (a.Top >= start.Top) && (a.Top <= end.Top));
                    YesList.AddRange(vpl);
                    NoneListCirc.RemoveAll(x => vpl.Contains(x));
                }
                else
                {
                    var vpl = NoneListCirc.Where(a => (a.Left >= start.Left) && (a.Left <= end.Left) &&
                                                 (a.Top <= start.Top) && (a.Top >= end.Top));
                    YesList.AddRange(vpl);
                    NoneListCirc.RemoveAll(x => vpl.Contains(x));
                }
            }
            else
            {
                if (start.Top < end.Top)
                {
                    var vpl = NoneListCirc.Where(a => (a.Left <= start.Left) && (a.Left >= end.Left) &&
                                                 (a.Top >= start.Top) && (a.Top <= end.Top));
                    YesList.AddRange(vpl);
                    NoneListCirc.RemoveAll(x => vpl.Contains(x));
                }
                else
                {
                    var vpl = NoneListCirc.Where(a => (a.Left <= start.Left) && (a.Left >= end.Left) &&
                                                 (a.Top <= start.Top) && (a.Top >= end.Top));
                    YesList.AddRange(vpl);
                    NoneListCirc.RemoveAll(x => vpl.Contains(x));
                }
            }
            Canvas.Children.Remove(arriver);
            ContextMenuClosed = true;
        }
예제 #3
0
        private void Cmd_CreateStation(object sender, ExecutedRoutedEventArgs e)
        {
            StationIconElement iconElement = new StationIconElement();
            EllipseGeometry    ellipse     = new EllipseGeometry();

            ellipse.RadiusX = 7.5;
            ellipse.RadiusY = 7.5;
            Path            arriver  = (Path)e.OriginalSource;
            EllipseGeometry geometry = (EllipseGeometry)arriver.Data;
            Point           pos      = geometry.Center;
            var             str      = YesList.Where(n => ((n.Left < pos.X) && (n.Right > pos.X) && (n.Top < pos.Y) && (n.Bottom > pos.Y)));
            Thickness       ness     = str.FirstOrDefault();

            ellipse.Center = new Point(ness.Left + Step / 2 - 0.25, ness.Top + Step / 2 - 0.25);
            YesList.Remove(ness);
            NoneList.Add(ness);
            iconElement.Icon  = ellipse;
            iconElement.Style = (Style)Application.Current.FindResource("IconStyle");
            //DragInCanvasBehavior dragInCanvas = new DragInCanvasBehavior();
            //Interaction.GetBehaviors(iconElement).Add(dragInCanvas);
            Canvas.Children.Add(iconElement);
            Canvas.SetZIndex(iconElement, 2);
        }