2012-10-08 45 views
13

私は線の描画をソリッド、点線または破線から動的に変更したいと思います:line.setStrokeを使用する必要があるようですが、正しい方法ですか?JavaFx 2.x:破線や点線を描く方法は?

そして、これを達成する方法は?

ありがとう

+0

私は解決策を見つけました:この方法を使用して line.setStyle( " - fx-stroke-dash-array:2 12 12 2;"); のようなリフレッシュを使用する必要があります。pane.getChildren()。remove(line); pane.getChildren()。add(line); それ以外の場合、線はソリッドから破線に変わりません(Windows XP)。 これ以外の方法がありますか?さらに、Linuxでは、削除と追加を使用する必要はなく、正しく動作します。 –

答えて

34

これは正しい方法ではありません。setStrokeはストロークの色を設定します。
正しいメソッドはgetStrokeDashArray().add()ある:

Line line1 = new Line(20, 40, 270, 40); 
line1.getStrokeDashArray().addAll(25d, 20d, 5d, 20d); 

Line line2 = new Line(20, 60, 270, 60); 
line2.getStrokeDashArray().addAll(50d, 40d); 

Line line3 = new Line(20, 80, 270, 80); 
line3.getStrokeDashArray().addAll(25d, 10d); 

Line line4 = new Line(20, 100, 270, 100); 
line4.getStrokeDashArray().addAll(2d); 

Line line5 = new Line(20, 120, 270, 120); 
line5.getStrokeDashArray().addAll(2d, 21d); 

pane.getChildren().addAll(line1, line2, line3, line4, line5); 

StrokeDashArrayラインとギャップ配列のパターンを画定します。 abovesの出力として、次の異なるパターンを参照してください:もちろん

enter image description here

をStrokeDashArray配列要素を操作することによって、あなたは動的パターンを変更することができます。

+0

私はこれが古いと知っていますが、追加するだけで、すべてのダッシュが独自の線として描画されるため、パフォーマンスに大きな影響を与えます。 – Appleshell

+0

@Uluk私はこのdashedArray()を使用しています。 'line.getStrokeDashArray()。addAll(3d、20d、30d);'なぜこの出力が得られますか?予期せぬことです。 http://imgur.com/a/DnzoV – UnKnown

+0

破線の 'gc.setLineDashes'はどうでしょうか? – lapots

関連する問題