如何从JavaFX中的路径正确减去形状

its*_*ude 2 javafx path subtraction

我的JavaFX应用程序最多可以绘制10种不同类型的形状。其中一些很复杂,必须使用“路径”将其绘制为一系列的直线和圆弧。一些形状是负区域,要从它们重叠的任何形状中减去它们。

我发现从基本的Javafx形状(例如Circle和Rectangle)中减去可以按预期工作,但从Path生成的形状却不能。

显示的重叠形状:
原来的形状

减去的结果: 从路径中减去形状

如您所见,该形状已正确地从圆中减去,但是尝试从“圆角”形状中减去椭圆仅会留下一个间隙,并且线条较暗/较粗,因为它试图通过回溯到另一个来缩小该间隙间隙的末端而不是绘制重叠区域。

这是用于绘制图像中所示的复杂形状的代码

//Here the v shape is drawn from right to left
Path path = new Path();
path.getElements().add(new MoveTo(firstLineXposition, firstLineYposition));
path.getElements().add(new LineTo(originX, originY));
path.getElements().add(new LineTo(secondLineXPos, secondLineYPos));

//here the arc is drawn from top left point to the top right point      
ArcTo arc = new ArcTo();
arc.setX(firstLineXposition);
arc.setY(firstLineYposition);
arc.setRadiusX(radiusPositionX);
arc.setRadiusY(radiusPositionY);
path.getElements().add(arc);
path.getElements().add(new ClosePath());
Run Code Online (Sandbox Code Playgroud)

我猜想在使用Path绘制这些形状时会错过一个步骤,应该将其视为一个整体形状,而应视为一系列线条。

mip*_*ipa 5

我假设您的路径未填充(未设置填充颜色)。因此,我想您只是与轮廓描边定义的区域相交。