在外面填充一个圆圈,里面变得透明

时间:2016-01-22 18:39:45

标签: java graphics2d imaging

好吧Stackoverflow,我需要你的帮助才能画画。

我仅限于Graphics2D,我想知道如何实现具有两层的图像。

第一层 - Color.white

第二层 - Color.red

现在我想要实现的是能够绘制一个圆圈, 允许自己看到第一层 ,而第二层仍然是红色。 不只是画一个白色的圆圈。

这是我的意思的图片

enter image description here

我遇到了一些以前的代码,但它没有用,所以我希望有人掌握Graphics2D的知识来实现​​这一目标。

这是代码,我把剩下的留给你。

BufferedImage img = new BufferedImage(sizeX, sizeY, BufferedImage.TYPE_INT_RGBA);
Graphics2D g = img.createGraphics();

int ovalX = 50;
int ovalY = 70;
int ovalRadius = 20;

/* Draw the grey rectangle */
g.setColor(Color.GRAY);
g.fillRect(0, 0, sizeX, sizeY);

/* Enable Anti-Alias */
g.setRenderingHint(RenderingHints.HINT_ANTIALIAS, RenderingHints.VALUE_ANTIALIAS_ON);

/* Clear the circle away */
g.setComposite(AlphaComposite.CLEAR, 1.0f);
g.fillOval(ovalX - ovalRadius, ovalY - ovalRadius, 2 * ovalRadius, 2 * ovalRadius);

g.dispose();

1 个答案:

答案 0 :(得分:1)

您可以使用AreaGraphics.setClip

Area a = new Area(yourRect);
a.subtract(new Area(yourCircle));
g.setClip(a);