我正在制作一个动画,其中在面板上有几个圆圈,我希望作为交集的一部分的轮廓可以更改颜色nad只是想知道是否有一个我可以使用可以为我解决这个问题?我是这个新手,正在尝试!
我还没有尝试过任何东西,因为我真的不知道该怎么做。但是,当它们相交时,我可以更改整个轮廓,但是我的目标是只使用轮廓的一部分来更改颜色。
所以我想看到的结果是:想象两个圆彼此相向运动,一旦它们的一部分区域重叠,围绕该特定区域的轮廓就会改变颜色。
谢谢!
答案 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);
}