示例#1
0
        public virtual bool IsInside(Point point, RailViewMode viewMode)
        {
            Geometry geometry = GetGeometry(viewMode);
            bool     f        = geometry.FillContains(point);

            return(f);
        }
示例#2
0
        public virtual bool IsInside(Rect rec, RailViewMode viewMode)
        {
            Geometry geometry = GetGeometry(viewMode);
            bool     f        = rec.Contains(geometry.Bounds);

            return(f);
        }
示例#3
0
        public override void DrawRailItem(DrawingContext drawingContext, RailViewMode viewMode, RailLayer layer)
        {
            this.DockPoints.ForEach(d => d.DrawOpen(drawingContext));

            drawingContext.PushTransform(this.RailTransform);

            //Debug.WriteLine($"DrawRailItem {this.IsSelected}");
            switch (viewMode)
            {
            case RailViewMode.Tracks:
                this.Track.RenderTrack(drawingContext, layer.TrackBrush);
                break;

            case RailViewMode.Rail:
            case RailViewMode.Terrain:
                this.Track.RenderRail(drawingContext);
                break;
            }

            if (this.IsSelected)
            {
                this.Track.RenderSelection(drawingContext);
            }
            if (this.IsAnchored)
            {
                Geometry geometry = anchorGeometry.Clone();
                geometry.Transform = new ScaleTransform(0.15, 0.15, 20, -20);
                drawingContext.DrawGeometry(Brushes.Red, anchorPen, geometry);
            }

            drawingContext.Pop();

            DrawDebug(drawingContext);
            DrawDebugDogpoints(drawingContext);
        }
示例#4
0
        protected override Geometry GetGeometry(RailViewMode viewMode)
        {
            Geometry geometry = this.Track.TrackGeometry.Clone();

            geometry.Transform = this.RailTransform;
            return(geometry);
        }
示例#5
0
 protected override Geometry GetGeometry(RailViewMode viewMode /*, Transform transform*/)
 {
     return(this.Rails.Select(r =>
     {
         Geometry geometry = r.Track.TrackGeometry.Clone();
         geometry.Transform = r.RailTransform;
         return geometry;
     }).Aggregate((a, b) => new CombinedGeometry(GeometryCombineMode.Union, a, b)));
 }
示例#6
0
        public override void DrawRailItem(DrawingContext drawingContext, RailViewMode viewMode, RailLayer layer)
        {
            this.DockPoints.ForEach(d => d.DrawOpen(drawingContext));

            this.Rails.ForEach(r => r.DrawRailItem(drawingContext, viewMode, layer));

            if (this.IsSelected && viewMode < RailViewMode.Terrain)
            {
                var geometrie = GetGeometry(viewMode /*, null*/);
                drawingContext.DrawDrawing(new GeometryDrawing(null, this.linePen, geometrie));
                drawingContext.DrawDrawing(new GeometryDrawing(null, this.dotPen, geometrie));
            }
        }
示例#7
0
 protected abstract Geometry GetGeometry(RailViewMode viewMode);
示例#8
0
 public abstract void DrawRailItem(DrawingContext drawingContext, RailViewMode viewMode, RailLayer layer);
示例#9
0
        public override bool IsInside(Rect rec, RailViewMode viewMode)
        {
            bool f = this.Rails.Any(r => r.IsInside(rec, viewMode));

            return(f);
        }
示例#10
0
        public override bool IsInside(Point point, RailViewMode viewMode)
        {
            bool f = this.Rails.Any(r => r.IsInside(point, viewMode));

            return(f);
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            RailViewMode mode = (RailViewMode)value;

            return(mode == RailViewMode.Terrain ? Visibility.Collapsed : Visibility.Visible);
        }