如何在 AWT 中用两个椭圆创建一个新形状?

How to create a new Shape out of two Ovals in AWT?

对于我的程序,我想让两个椭圆重叠,然后从重叠区域创建一个新形状。这样我以后可以将生成的形状再次与另一个形状组合。

最后,我想把结果取下来,然后给它涂上不同的颜色。您可以想象生成的图像是一簇椭圆形,其中只有某些部分的颜色不同。

我正在尝试使用 java.awt 来完成此操作,但我真的不知道如何将这个新形状创建为某种对象。我知道有一种方法叫做 intersect(),但据我了解,它只检查形状是否与矩形相交。

有一个名为 Area 的 class(我相信它在 java.awt.geom 中)非常适合这个

Shape oval1 = ..., oval2 = ...;
Area a = new Area(oval1).subtract(oval2);

您可以通过

随意给它上色
Graphics2D g2 =...;
g2.setColor(yourColor);
g2.fill(a);

顺便说一下,请在此处查看这些用于管理区域的控件:https://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/shape/