예제 #1
0
        public override void MouseLUpHandler(object sender, MouseButtonEventArgs e)
        {
            if (!_isEnded && _isStarted && !_isDragging)
            {
                _isDragging      = true;
                _mouseDownOrigin = MapControl.Current.GetWorldCoord(e.GetPosition(MapControl.Current));
                _clickPoints.Add(_mouseDownOrigin);
            }
            else if (_isEnded)
            {
            }
            else
            {
                _tempMouseDownEnd = _mouseDownEnd;
                _clickPoints.Add(_mouseDownEnd);

                double distance = Enumerable.Range(0, _clickPoints.Count - 1).Sum(i => _clickPoints[i].DistTo(_clickPoints[i + 1]));
                _tempLabel = new TextBlock {
                    Text = distance.ToString("0.000") + "m"
                };
                Canvas.SetLeft(_tempLabel, MapControl.Current.GetCanvasCoord(_mouseDownEnd).X + 10);
                Canvas.SetTop(_tempLabel, MapControl.Current.GetCanvasCoord(_mouseDownEnd).Y + 15);

                _labels.Add(_tempLabel, _mouseDownEnd);
                MapControl.Current.Children.Add(_tempLabel);
            }
        }
예제 #2
0
 public override void MouseMoveHandler(object sender, MouseEventArgs e)
 {
     if (!_isEnded && _isDragging)
     {
         _mouseDownEnd = MapControl.Current.GetWorldCoord(e.GetPosition(MapControl.Current));
     }
     this.Render();
 }
예제 #3
0
        private void ReadyScene()
        {
            // 河道、暗管
            var pipeLayer           = MapDataManager.LatestMap.Layers["管线"];
            SimpleFluidTheme theme1 = new SimpleFluidTheme {
                Velocity = 120000, Diameter = 30000, Density = 1.0 / 48000
            };

            theme1.InnerColorTheme.MinColor = Color.FromRgb(77, 216, 233);
            theme1.InnerColorTheme.MaxColor = Color.FromRgb(77, 216, 233);
            var rivers = new string[] { "river1", "river2" };

            foreach (var river in rivers)
            {
                var feature = pipeLayer.Features.First(f => f["名称"] == river);
                AddFluid(MapControl.Current.AnimationLayer, theme1, feature);
            }
            SimpleFluidTheme theme2 = new SimpleFluidTheme {
                Velocity = 240000, Diameter = 20000, Density = 1.0 / 36000
            };

            theme2.InnerColorTheme.MinColor = Color.FromRgb(0, 150, 233);
            theme2.InnerColorTheme.MaxColor = Color.FromRgb(0, 150, 233);
            var pipes = new string[] { "pipe1", "pipe2" };

            foreach (var pipe in pipes)
            {
                var feature = pipeLayer.Features.First(f => f["名称"] == pipe);
                AddFluid(MapControl.Current.AnimationLayer, theme2, feature);
            }

            // 泵
            var pumpLayer = MapDataManager.LatestMap.Layers["城镇"];
            var tishengs  = new string[] { "tisheng1", "tisheng2", "tisheng3" };

            foreach (var pump in tishengs)
            {
                var feature = pumpLayer.Features.First(f => f["名称"] == pump);
                var point   = new TongJi.Geometry.Point2D(feature.GeoData);
                var pos     = new Point(point.x, point.y);
                AddPump(MapControl.Current.AnimationLayer, pos, Brushes.Black, Brushes.Orange, 30000, 15000, 60000, 1000);
            }
            var yongquans = new string[] { "yongquan1", "yongquan2", "yongquan3" };

            foreach (var pump in yongquans)
            {
                var feature = pumpLayer.Features.First(f => f["名称"] == pump);
                var point   = new TongJi.Geometry.Point2D(feature.GeoData);
                var pos     = new Point(point.x, point.y);
                AddPump(MapControl.Current.AnimationLayer, pos, Brushes.White, Brushes.Red, 40000, 0, 40000, 500);
                AddPump(MapControl.Current.AnimationLayer, pos, Brushes.White, Brushes.Red, 16000, 8000, 32000, 500);
            }
        }
예제 #4
0
        public override void MouseLUpHandler(object sender, MouseButtonEventArgs e)
        {
            if (_isStarted == false)
            {
                if (_isMoving == true)
                {
                    TongJi.Geometry.Point2D pt1 = MapControl.Current.GetWorldCoord(_mouseDownOrigin);
                    TongJi.Geometry.Point2D pt2 = MapControl.Current.GetWorldCoord(_mouseDownEnd);

                    var extent = new Geometry.Extent2D(pt1, pt2);
                    MapControl.Current.Zoom(extent);

                    _isMoving = false;
                }

                MapControl.Current.Children.Remove(currentRect);
                currentRect.Visibility = Visibility.Collapsed;
                _isDragging            = false;
            }
        }