JavaFX:绘制清晰的细线

JavaFX:绘制清晰的细线,java,javafx,Java,Javafx,我想知道如何使用JavaFX绘制清晰的细线。我想我的线条是黑色的,1像素高。以下是我目前的情况: public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); root.setSnapToPixel(true);

我想知道如何使用JavaFX绘制清晰的细线。我想我的线条是黑色的,1像素高。以下是我目前的情况:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();
            root.setSnapToPixel(true);
            Scene scene = new Scene(root,400,400);

            Line line = new Line();
            Line line2 = new Line();

            line.setStartX(0.0f);
            line.setEndX(100f);
            line.setStartY(30f);
            line.setEndY(30f);
            line.setStrokeWidth(1f);
            line.setStrokeType(StrokeType.OUTSIDE);
            line.setStroke(Color.BLACK);

            line2.setStartX(50.0f);
            line2.setEndX(200f);
            line2.setStartY(100f);
            line2.setEndY(100f);
            line2.setStrokeWidth(1f);
            line2.setStrokeType(StrokeType.OUTSIDE);
            line2.setStroke(Color.BLACK);

            root.getChildren().addAll(line, line2);

            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
以下是我得到的:

线条非常粗,使用值<1调用
setStrokeWidth()
方法对高度没有影响,但会使黑色褪色。你知道如何得到一个1像素高的线条吗


我可以通过使用高度为1像素的矩形来实现,但它看起来有点脏。

如果使用
StrokeType.CENTERED
,并在半个单位上开始x/y值,那么这些线在我看来就是发际线

public void start(Stage primaryStage) {
    try {
        BorderPane root = new BorderPane();
        root.setSnapToPixel(true);
        Scene scene = new Scene(root, 400, 400);

        Line line = new Line();
        Line line2 = new Line();

        line.setStartX(0.5);
        line.setEndX(100.5);
        line.setStartY(30.5);
        line.setEndY(30.5);
        line.setStrokeWidth(1.0);
        line.setStrokeType(StrokeType.CENTERED);
        line.setStroke(Color.BLACK);

        line2.setStartX(50.5);
        line2.setEndX(200.5);
        line2.setStartY(100.5);
        line2.setEndY(100.5);
        line2.setStrokeWidth(1.0);
        line2.setStrokeType(StrokeType.CENTERED);
        line2.setStroke(Color.BLACK);

        root.getChildren().addAll(line, line2);

        primaryStage.setScene(scene);
        primaryStage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

我猜测JavaFX中的单位号是像素的角,所以指定<代码>位置+ 0.5 < /CUT>将该行放置在所述像素的中间。< /P>此问题不应被标记为重复,因为LineBuilder现在被弃用,因此原来的问题不再是最新的。此外,这个问题是关于JavaFX8的,而不是关于JavaFX2.2的。这里提供的源代码甚至没有在2.2中编译,我认为这可能会解决您的问题:-使用

以外的其他值。我只是在这里猜测,我想,没必要在这里猜测。例如,只看一下Node类的javadoc。寻找坐标系。