在JavaFX程序中,我画了一条黑色的单像素虚线。当我画一个黑色,一个像素 在它上面的实线我仍然可以看到破折号穿过实线。 无论我是在画布上划线,还是使用 smooth 设置的Line节点,都会发生这种情况 为真。
为什么?有没有办法阻止它?
附带示例程序和图像。
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();
}
}
答案 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);