C# WPF Графика. Пересечение фигур. Как привести Polygon в Geometry?

Есть два полигона p1 и p2. Нужно найти их пересечение и вывести на экран.
Проблема в том что CombinedGeometry принимает в аргументах Geometry.
Увы, не могу додуматься как привести "Polygon" к "Geometry".
  • Вопрос задан
  • 893 просмотра
Пригласить эксперта
Ответы на вопрос 1
FoggyFinder
@FoggyFinder
По сути ваш вопрос содержит два отдельных вопроса:

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
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы