private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { //Circle around clicked point: double tolerance = 4; Point ClickedPoint = e.GetPosition(MainCanvas); EllipseGeometry eg = new EllipseGeometry(); eg.RadiusX = tolerance; eg.RadiusY = tolerance; eg.Center = ClickedPoint; // Geometry of an ellipse object on the canvas: EllipseGeometry eg2 = new EllipseGeometry(); foreach (Ellipse TargetEllipse in MainCanvas.Children) { eg2.RadiusX = TargetEllipse.Width / 2; eg2.RadiusY = TargetEllipse.Height / 2; eg2.Center = new Point( ((double)TargetEllipse.GetValue(Canvas.LeftProperty)) + TargetEllipse.Width / 2, ((double)TargetEllipse.GetValue(Canvas.TopProperty)) + TargetEllipse.Height / 2 ); //Combine them CombinedGeometry cg = new CombinedGeometry(GeometryCombineMode.Intersect, eg, eg2); //Is there an overlap if (!cg.Bounds.IsEmpty) { // Close enough - do something } } }Rough code to work with ellipses only - better code would cope with any shape on the Canvas....