获取2个重叠椭圆之间的区域

时间:2015-02-14 13:25:12

标签: c# winforms

这可能更像是一个数学问题,但我可以说我有两个重叠的椭圆:

enter image description here

我如何找到2个椭圆之间的区域(内椭圆和外椭圆之间的区域),因为我只有2个椭圆方程。我试图在Winforms中这样做,但我不认为框架有任何这样的功能。

1 个答案:

答案 0 :(得分:1)

如果您想使用该区域绘制或在其中绘制,请按以下步骤操作:

private void Form2_Paint(object sender, PaintEventArgs e)
{
    Rectangle R1 = new Rectangle(11, 11, 222, 111);
    Rectangle R2 = new Rectangle(44, 44, 111, 55);

    GraphicsPath GP1 = new GraphicsPath();
    GraphicsPath GP2 = new GraphicsPath();

    GP1.AddEllipse(R1);
    GP2.AddEllipse(R2);

    Region Re1 = new Region(GP1);
    Region Re2 = new Region(GP2);

    Re1.Exclude(Re2);           // subtract the inner region

    e.Graphics.Clip = Re1;      // restrict the Graphics to the region
    e.Graphics.Clear(Color.DarkOrange);
    e.Graphics.ResetClip();    // maybe reset the clip

}

结果如下:

enter image description here