将 .intersect 创建的形状添加到 Canvas?

Add Shape created by .intersect to a Canvas?

我正在尝试突出显示与 2 个圆相交的区域:

示例 1.: 出于测试目的,黄点获得随机值。这些用于绘制一个圆圈,以及在背景中存储一个椭圆。在没有交集的情况下,GUI 会正确运行并显示:

随机值后,形状相交。由于我似乎无法添加通过 .intersect() 制作的新形状,我只是快速地做了一个 sp.setContent(),并得到了这张图片:

这基本上显示了相交的 space 并将其着色为蓝色。

所有内容都绘制在 Canvas 上,它基本上执行以下操作:

Canvas canvas = new Canvas(250, 250);
....
gc = canvas.getGraphicsContext2D();
canvas.setHeight(imgTemp.getHeight());
canvas.setWidth(imgTemp.getWidth());
gc.drawImage(imgTemp, 0, 0);

以及与其他一些循环一起绘制形状和圆圈。 现在,相交的代码如下:

if (!(e.equals(eT))) {
    if (e.getBoundsInParent().intersects(eT.getBoundsInParent())) {
    System.out.println("Collision detected!");
    Shape inter = Shape.intersect(e, eT);
    if(inter.getBoundsInLocal().getWidth() > 0 && 0 < inter.getBoundsInLocal().getHeight()){
    inter.setFill(BLUE);
    inter.setStrokeWidth(3);
    sp.setContent(inter);
    }
 }

我不太习惯 JavaFX,这个周末才开始真正为一个小项目工作,但我猜我可能需要从 canvas 更改为其他东西才能使用的形状?或者有没有办法 "tranform" 相交的形状变成 GraphicsContext2D 可绘制的东西?

为什么不直接将 Canvas 放入一个组中,然后将形状添加到同一个组中。你为什么要坚持把所有东西都画进Canvas? Canvas 与所有其他形状一样只是一个节点,您可以在 SceneGraph 中自由混合它们。

另一个问题是,如果您已经意识到这会导致您的情况出现问题,那么您为什么还要使用 Canvas。