加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JavaFX:绘制锐利的细线

发布时间:2020-12-15 02:09:42 所属栏目:Java 来源:网络整理
导读:我想知道如何使用 JavaFX绘制锐利的细线.我想我的线条是黑色的,高1像素.这就是我现在所拥有的: public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); root.setSnapToPix
我想知道如何使用 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);
    }
}

这是我得到的:

result

这些行非常粗,并使用值<来调用setStrokeWidth()方法. 1对高度没有影响,但会使黑色渐变.知道如何获得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);

        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会将线放在所述像素的中间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读