当圆相交时,如何更改圆的颜色? (java)

时间:2019-05-09 06:57:20

标签: java graphics geometry intersection

我正在制作一个动画,其中在面板上有几个圆圈,我希望作为交集的一部分的轮廓可以更改颜色nad只是想知道是否有一个我可以使用可以为我解决这个问题?我是这个新手,正在尝试!

我还没有尝试过任何东西,因为我真的不知道该怎么做。但是,当它们相交时,我可以更改整个轮廓,但是我的目标是只使用轮廓的一部分来更改颜色。

所以我想看到的结果是:想象两个圆彼此相向运动,一旦它们的一部分区域重叠,围绕该特定区域的轮廓就会改变颜色。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个基于How To Highlight The Overlapped Area Between Two Shapes的答案的示例。

它使用Area.intersect(Area)方法。

  

将此区域的形状设置为其当前形状的交点   以及指定区域的形状。

@Override
protected void paintComponent(final Graphics g) {
    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;

    Dimension d = getSize();
    int width = d.width * 3 / 4;
    int height = d.height * 3 / 4;

    Ellipse2D.Double el1 = new Ellipse2D.Double(0, 0, width, height);
    g2d.setColor(Color.BLUE);
    g2d.fill(el1);

    Ellipse2D.Double el2 = new Ellipse2D.Double(d.width - width, d.height - height, width, height);
    g2d.setColor(Color.YELLOW);
    g2d.fill(el2);

    Area area = new Area(el1);
    area.intersect(new Area(el2));
    g2d.setColor(Color.RED);
    g2d.draw(area);

}

enter image description here