在维恩图中填充三组或更多组的交集
fill intersection of three or more sets in venn diagram
我正在写维恩图,我在交集上遇到了问题。
我画了圆,但我无法填充 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);
我的意思是这样的
现在您正试图将一个无限区域与包含您的两个圆的单个 GraphicsPath 对象相交。由于该区域一开始是无限的,Intersect 方法将只是 return 您指定的 GraphicsPath 对象所占据的区域。
要解决此问题,请通过将代表第一个圆的 GraphicsPath 传递给构造函数来创建您的区域。然后使用包含第二个圆的不同 GraphicsPath 调用相交函数。
我正在写维恩图,我在交集上遇到了问题。
我画了圆,但我无法填充 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);
我的意思是这样的
现在您正试图将一个无限区域与包含您的两个圆的单个 GraphicsPath 对象相交。由于该区域一开始是无限的,Intersect 方法将只是 return 您指定的 GraphicsPath 对象所占据的区域。
要解决此问题,请通过将代表第一个圆的 GraphicsPath 传递给构造函数来创建您的区域。然后使用包含第二个圆的不同 GraphicsPath 调用相交函数。