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); } }
public override void MouseMoveHandler(object sender, MouseEventArgs e) { if (!_isEnded && _isDragging) { _mouseDownEnd = MapControl.Current.GetWorldCoord(e.GetPosition(MapControl.Current)); } this.Render(); }
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); } }
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; } }