заполнить пересечение трех или более множеств на диаграмме Венна

я пишу диаграмму венна, и у меня есть проблема в пересечении.

я рисую круги, но я не могу заполнить пересечение 3 или более кругов.

я заполняю пересечение двух кругов этим кодом

   Graphics g = this.CreateGraphics();
   GraphicsPath path = new GraphicsPath();
   Region region1 = new Region();

   Brush blue = new SolidBrush(Color.Blue);  
   Brush white=new SolidBrush(Color.White);
   Rectangle circle1 = new Rectangle(455, 200, 150, 150);
   Rectangle circle2 = new Rectangle(455, 275, 150, 150);
   g.FillEllipse(blue, circle1);
   g.FillEllipse(blue, circle2);

   path.AddEllipse(circle1);
   path.AddEllipse(circle2);
   region1.Intersect(path);
   g.FillRegion(white, region1);

я имею в виду что-то вроде этого

Image


person AmRzA    schedule 14.04.2015    source источник


Ответы (1)


Прямо сейчас вы пытаетесь пересечь бесконечную область с одним объектом GraphicsPath, содержащим обе ваши окружности. Поскольку область изначально бесконечна, метод Intersect просто вернет область, занятую указанным вами объектом GraphicsPath.

Чтобы исправить это, создайте свой регион, передав конструктору GraphicsPath, представляющий 1-й круг. Затем вызовите функцию Intersect, используя другой GraphicsPath, содержащий второй круг.

person RogerN    schedule 14.04.2015