По сути ваш вопрос содержит два отдельных вопроса:
1. Как найти пересечение полигонов.
2. Как преобразовать
Polygon к
Geometry.
Отвечаю на второй:
За определение сложных геометрических фигур отвечает класс
PathFigure. Нужно определить начальную точку и последовательность сегментов (в нашем случае -
LineSegment)
var s1 = p1.Points.Skip(1).Select(p => new LineSegment { Point = p } );
var g1 = new PathFigure(p1.Points.First(), s1, true);
где p1 - первый полигон.
Со вторым поступаем аналогично, ну а дальше вы уже знаете
var path1 = new PathGeometry(new[] { g1 });
var path2 = new PathGeometry(new[] { g2 });
var path = new Path()
{
Data = new CombinedGeometry(GeometryCombineMode.Intersect, path1, path2),
Fill = Brushes.Green
};