private void ClipPolygons() { if (Polygons.Count != 2) { throw new InvalidOperationException("Clipping is only possible for two and exactly two polygons"); } if (Clipper == null) { throw new InvalidOperationException("No polygon clipper set"); } var resultPolygon = Clipper.GetIntersectedPolygon(Polygons[0].Points, Polygons[1].Points); if (resultPolygon.IsEmpty) { DialogHandler?.ShowMessageBox("No overlap"); } else { Polygons.Clear(); var color = GenerateRandomColor(); Polygons.Add(new Polygon { Description = "Clipped Polygon", Points = resultPolygon, StrokeColor = color, FillColor = Color.FromArgb(128, color) }); } }