我希望能够使用 Graphics2D 实例在 BufferedImage 上绘制图形,并填充 Shape 外部的颜色。如果这是一个矩形之类的 Shape,那么这很容易,但我需要处理的形状是圆形。
要填充圆形的颜色很容易,只需编写如下代码:
然而,我想要的与此相反。我想填充由数字 (x, y, width, height) 定义的椭圆形内部之外的所有内容。
要填充圆形的颜色很容易,只需编写如下代码:
Graphics2D g2d = <my_image>.createGraphics();
...
g2d.fillOval(x, y, width, height);
然而,我想要的与此相反。我想填充由数字 (x, y, width, height) 定义的椭圆形内部之外的所有内容。
我在这方面几乎没有什么成功经验。唯一想到的事情是在我想要圆圈占据的空间周围绘制巨大的拱形,但我很难计算出这个过程中的数学运算。
编辑:我不能只填充整个图像,然后再对圆圈进行涂色,因为圆圈中的内容不是单一的颜色,而是我想要在图像(如我的照片)的中心添加一个圆圈周围的单一颜色。因此,在绘制周围区域时,圆形中间的任何内容都已经存在,而且不是首先通过代码绘制的东西。