【问题标题】:Filling A Circle On The Outside, Inside Becomes Transparent在外面填充一个圆圈,里面变成透明的
【发布时间】:2016-01-22 18:39:45
【问题描述】:

好的 Stackoverflow,我需要你的帮助来绘制这个。

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

第一层 - Color.white

第二层 - Color.red

现在我想要实现的是绘制一个让我自己看到第一层而第二层仍然是红色的圆圈的能力。 不是简单地画一个白色的圆圈。

这是我的意思的图片

我遇到了一些以前的代码,但它不起作用,所以我希望有人具备 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();

【问题讨论】:

    标签: java graphics2d imaging


    【解决方案1】:

    您可以使用AreaGraphics.setClip

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

    【讨论】:

    • 谢谢你成功了!之后我不得不绘制区域,这很奇怪,你不需要将 a.subtract 设置回 a,它是一个 void 语句。
    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2021-11-04
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多