2012-10-08 14 views
13

Bir çizginin çekilişini düz, noktalı veya kesikli olarak dinamik olarak değiştirmek istiyorum: line.setStroke kullanmalıyım, doğru yöntem mi?JavaFx 2.x: Kesik veya noktalı çizgiler nasıl çizilir?

Ve bunu nasıl başarabilirsiniz?

Teşekkür

doğru bir yöntem değildir
+0

Bir çözüm buldum: bu yöntemi kullanarak line.setStyle ("- fx-stroke-dash-array: 2 12 12 2;"); pane.getChildren() gibi bir yenileme kullanmalıyım remove (line); pane.getChildren(). Add (line); aksi takdirde çizgi kesik kesik çevirmeyin. (Windows XP). Bunun dışında başka bir yolu var mı? Dahası, Linux'ta kaldırmaya ve eklemeye gerek yok, doğru çalışıyor. –

cevap

34

Hayır, setStroke inme rengini ayarlar.
doğru yöntem getStrokeDashArray().add() olup:

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 hattı ve boşluk dizilerinin bir model tanımlar. aboves çıktısı olarak aşağıdaki farklı biçimlerine bakın: Elbette

enter image description here

StrokeDashArray dizi elemanlarını manipüle ederek dinamik desen değiştirebilir.

+0

Bunun eski olduğunu biliyorum, ancak eklemek gerekirse, her çizgi kendi çizgisi olarak çizildiğinden, bu performansa büyük bir darbe katıyor. – Appleshell

+0

@Uluk Ben bu dashedArray() kullanıyorum; line.getStrokeDashArray(). addAll (3d, 20d, 30d); 'Neden bu çıktıyı alıyorum? Bu beklenmedik. http://imgur.com/a/DnzoV – UnKnown

+0

Kesikli çizgiler için 'gc.setLineDashes' nedir? – lapots