小编Mar*_*ele的帖子

JavaFX 如何在不改变线宽的情况下缩放路径的坐标?

我目前正在制作具有缩放和平移功能的阶梯折线图。由于我需要处理的数据量非常大,因此每次调用layoutPlotChildren() 时,我无法重新创建步骤线的整个路径。所以我的想法是创建一次路径元素,然后在缩放和平移事件时对其进行转换。

到目前为止,一切都按计划进行,但是当我尝试扩展路径时遇到了一个大问题。由于 Path 类继承自 Shape,因此 Graph 上的缩放不仅会变换路径的坐标,还会改变其厚度。

我创建了一个最小的工作示例来呈现该问题:

public class Sandbox extends Application
{

    @Override public void start(Stage primaryStage)
    {
        Path path = new Path();
        path.getElements().add(new MoveTo(0, 0));
        path.getElements().add(new LineTo(100, 0));
        path.getElements().add(new LineTo(100, 100));
        path.getElements().add(new LineTo(200, 100));

        path.setScaleY(3);

        Pane pane = new StackPane(path);

        Scene scene = new Scene(pane, 800, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,坐标按预期缩放,但所有水平线的粗细都是以前的三倍。我完全理解为什么会发生这种情况,但我想不出任何可能来防止线条变粗。您对如何解决这个问题同时仍然确保可接受的性能有什么建议吗?

javafx transformation scale javafx-8

5
推荐指数
1
解决办法
1509
查看次数

标签 统计

javafx ×1

javafx-8 ×1

scale ×1

transformation ×1