private void btnSplitLine_Click(object sender, EventArgs e) { LayerOverlay layerOverLay = (LayerOverlay)winformsMap1.Overlays[1]; MapShapeLayer mapShapeLayer = (MapShapeLayer)layerOverLay.Layers[0]; LineShape lineShape = (LineShape)mapShapeLayer.MapShapes["Line1"].Feature.GetShape(); LineShape lineShape2 = (LineShape)mapShapeLayer.MapShapes["Line2"].Feature.GetShape(); //Gets the crossing MultipointShape with the PointShape that will be used to calculate the two split lines. MultipointShape multipointShape = lineShape.GetCrossing(lineShape2); //Uses the GetLineOnLine (Dynamic Segmentation) to get the two split lines from the intersection point. LineShape splitLineShape1 = (LineShape)lineShape.GetLineOnALine(StartingPoint.FirstPoint, multipointShape.Points[0]); LineShape splitLineShape2 = (LineShape)lineShape.GetLineOnALine(StartingPoint.LastPoint, multipointShape.Points[0]); //Displays the two split lines with different colors to distinguish them. MapShape splitMapShape1 = new MapShape(new Feature(splitLineShape1)); splitMapShape1.ZoomLevels.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.StandardColors.Orange, 3, true); splitMapShape1.ZoomLevels.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; mapShapeLayer.MapShapes.Add("SplitLine1", splitMapShape1); MapShape splitMapShape2 = new MapShape(new Feature(splitLineShape2)); splitMapShape2.ZoomLevels.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.StandardColors.Turquoise, 3, true); splitMapShape2.ZoomLevels.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; mapShapeLayer.MapShapes.Add("SplitLine2", splitMapShape2); //Displays the intersection point as a reference. MapShape pointMapShape = new MapShape(new Feature(multipointShape.Points[0])); pointMapShape.ZoomLevels.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.StandardColors.Red, GeoColor.StandardColors.Black, 1, 9); pointMapShape.ZoomLevels.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; mapShapeLayer.MapShapes.Add("Point", pointMapShape); winformsMap1.Refresh(layerOverLay); btnSplitLine.Enabled = false; }