private void MouseMoved(object sender, MouseMovedTrackInteractiveOverlayEventArgs e) { //Gets the shape as it is being tracked and gets its properties to be displayed in labels og groupbox AreaBaseShape areaBaseShape = (AreaBaseShape)winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures[0].GetShape(); double Perimeter = Math.Round(areaBaseShape.GetPerimeter(winformsMap1.MapUnit, DistanceUnit.Kilometer)); double Area = Math.Round(areaBaseShape.GetArea(winformsMap1.MapUnit, AreaUnit.SquareKilometers)); lblPerimeter.Text = String.Format("{0:0,0}", Perimeter) + " km"; lblArea.Text = String.Format("{0:0,0}", Area) + " km2"; //Sets the location (in screen coordinates) of the groupbox according to last moved vertex of the tracked shape (in world coordinates). ScreenPointF screenPointF = ThinkGeo.MapSuite.Core.ExtentHelper.ToScreenCoordinate(winformsMap1.CurrentExtent, e.MovedVertex.X, e.MovedVertex.Y, winformsMap1.Width, winformsMap1.Height); groupBoxInfo.Location = new Point((int)screenPointF.X + 30, (int)screenPointF.Y + 10); }
protected override void OnMouseMoved(MouseMovedTrackInteractiveOverlayEventArgs e) { base.OnMouseMoved(e); var trackShape = GetTrackingShape(); if (!isShiftKeyDown && trackShape != null && (TrackMode == TrackMode.Polygon || TrackMode == TrackMode.Line) && editOverlay != null && editOverlay.SnappingLayers.Count > 0) { lock (OverlayCanvas.Children) { var snappingCircle = OverlayCanvas.Children.OfType <System.Windows.Shapes.Ellipse>().FirstOrDefault(); if (snappingCircle == null) { snappingCircle = new System.Windows.Shapes.Ellipse(); snappingCircle.IsHitTestVisible = false; snappingCircle.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; snappingCircle.VerticalAlignment = System.Windows.VerticalAlignment.Top; snappingCircle.Stroke = new SolidColorBrush(Colors.Black); snappingCircle.StrokeThickness = 1; OverlayCanvas.Children.Add(snappingCircle); } var snappingDistance = editOverlay.SnappingDistance; var snappingDistanceUnit = editOverlay.SnappingDistanceUnit; var snappingScreenPoint = ExtentHelper.ToScreenCoordinate(MapArguments.CurrentExtent, e.MovedVertex.X, e.MovedVertex.Y, (float)MapArguments.ActualWidth, (float)MapArguments.ActualHeight); try { SnappingAdapter calc = SnappingAdapter.Convert(snappingDistance, snappingDistanceUnit, MapArguments, e.MovedVertex); var snappingArea = new PointShape(e.MovedVertex.X, e.MovedVertex.Y) .Buffer(calc.Distance, editOverlay.MapArguments.MapUnit, calc.DistanceUnit) .GetBoundingBox(); var snappingScreenSize = Math.Max(snappingArea.Width, snappingArea.Height) / MapArguments.CurrentResolution; snappingCircle.Width = snappingScreenSize; snappingCircle.Height = snappingScreenSize; snappingCircle.Margin = new System.Windows.Thickness(snappingScreenPoint.X - snappingScreenSize * .5, snappingScreenPoint.Y - snappingScreenSize * .5, 0, 0); } catch { } } //PointShape snappedPoint = GetSnappingPoint(e.MovedVertex, e.AffectedFeature); //if (snappedPoint != null) //{ // e.MovedVertex = new Vertex(snappedPoint); // lock (OverlayCanvas.Children) // { // var snappingCircle = OverlayCanvas.Children.OfType<System.Windows.Shapes.Ellipse>().FirstOrDefault(); // if (snappingCircle == null) // { // snappingCircle = new System.Windows.Shapes.Ellipse(); // snappingCircle.IsHitTestVisible = false; // snappingCircle.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; // snappingCircle.VerticalAlignment = System.Windows.VerticalAlignment.Top; // snappingCircle.Stroke = new SolidColorBrush(Colors.Black); // snappingCircle.StrokeThickness = 1; // OverlayCanvas.Children.Add(snappingCircle); // } // var snappingDistance = editOverlay.SnappingDistance; // var snappingDistanceUnit = editOverlay.SnappingDistanceUnit; // var snappingScreenPoint = ExtentHelper.ToScreenCoordinate(MapArguments.CurrentExtent, snappedPoint, (float)MapArguments.ActualWidth, (float)MapArguments.ActualHeight); // SnappingAdapter calc = SnappingAdapter.Convert(snappingDistance, snappingDistanceUnit, MapArguments, e.MovedVertex); // var snappingArea = snappedPoint.Buffer(calc.Distance, editOverlay.MapArguments.MapUnit, calc.DistanceUnit).GetBoundingBox(); // var snappingScreenSize = Math.Max(snappingArea.Width, snappingArea.Height) / MapArguments.CurrentResolution; // snappingCircle.Width = snappingScreenSize; // snappingCircle.Height = snappingScreenSize; // snappingCircle.Margin = new System.Windows.Thickness(snappingScreenPoint.X - snappingScreenSize * .5, snappingScreenPoint.Y - snappingScreenSize * .5, 0, 0); // } //} } }