Я быстро понял это, и самое близкое, что я получил, это:
var region = new Region(gp1);
region.Intersect(gp2);
var gpResult = new GraphicsPath();
gpResult.AddRectangles(region.GetRegionScans(new Matrix()));
gpResult.CloseAllFigures();
using (var br = new SolidBrush(Color.LightYellow))
{
e.Graphics.FillPath(br, gpResult);
//e.Graphics.DrawPath(Pens.Black, gpResult);
}
Проблема в том, что GetRegionScans()
возвращает тысячи прямоугольников, а не только отдельные точки линий. Раскомментируйте метод DrawPath, чтобы понять, что я имею в виду.
Существует библиотека с открытым исходным кодом для управления отсечкой, которая, по-видимому, достаточно активна здесь (найдено с помощью этого вопроса Stackoverflow ).
У меня нет опыта работы с ним, но, похоже, он сможет делать то, что вам нужно.