void PerformRendering(Graphics graphics, CombinedGeometry clp) { if (!rbNone.IsChecked) { if (rbBminusA.IsChecked) { clp.Operation = CombinedGeometry.CombineMode.B_minus_A; } else if (rbAminusB.IsChecked) { clp.Operation = CombinedGeometry.CombineMode.A_minus_B; } else if (rbXor.IsChecked) { clp.Operation = CombinedGeometry.CombineMode.Xor; } else if (rbAnd.IsChecked) { clp.Operation = CombinedGeometry.CombineMode.And; } else if (rbOr.IsChecked) { clp.Operation = CombinedGeometry.CombineMode.Or; } GeometryPolyCounter counter = new GeometryPolyCounter(clp); GraphicsPath path = new GraphicsPath(); path.Concat(counter); graphics.FillPath(new ColorR(0.65, 0.25, 0.9, 0.25), path); graphics.DrawPath(m_ContourPen, path); string info = StringFormatter.sprintf("Contours: %d Points: %d", counter.Contours, counter.Points); graphics.DrawString(info, m_InfoFont, Brushes.White, Point.Five); } }