Dashhes在JavaFX中通过实线流血

时间:2017-08-18 18:10:13

标签: java javafx

在JavaFX程序中,我画了一条黑色的单像素虚线。当我画一个黑色,一个像素 在它上面的实线我仍然可以看到破折号穿过实线。 无论我是在画布上划线,还是使用 smooth 设置的Line节点,都会发生这种情况 为真。

为什么?有没有办法阻止它?

附带示例程序和图像。

enter image description here

package sandbox2;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.stage.Stage;

public class Test extends Application
{
    public static void main( String[] args )
    {
        launch( args );
    }

    @Override
    public void start( Stage primaryStage ) throws Exception
    {
        primaryStage.setTitle( "Fx Playground" );

        Group   root    = new Group();
        Scene   scene   = new Scene( root, 350, 100 );
        primaryStage.setScene( scene );

        Line    line1  = new Line( 50, 50, 300, 50 );
        line1.setStroke( Color.BLACK );
        line1.getStrokeDashArray().addAll( 5. );
        line1.setSmooth( true );

        Line    line2  = new Line( 50, 50, 300, 50 );
        line2.setStroke( Color.BLACK );
        line2.setSmooth( true );

        ObservableList<Node>    nodes   = root.getChildren();
        nodes.add( line1 );
        nodes.add( line2 );

        primaryStage.show();
    }

}

2 个答案:

答案 0 :(得分:2)

您应该将行构造函数更改为new Line( 50.5, 50.5, 300, 50 )我认为这将解决问题。有关说明,请参阅:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Shape.html

答案 1 :(得分:0)

您可以将最高Line的笔画宽度比底部Line增加1。

  

添加此代码:

line2.setStrokeWidth(2);