Genel olarak, sorgunuzda özetlediğiniz grup tabanlı yaklaşımı seviyorum. Özel durumunuza uymaması talihsiz bir durumdur, ancak bu soruya cevap verenler için, başvuruları için tercih edilen bir çözüm olabilir.
Sen sınır rengini oluşturmak için PolyLine bir DropShadow efekti uygulanabilir. Bu, köşeler için biraz yuvarlak kenarlarla sonuçlanacak ve dilediğiniz gibi olabilir ya da olmayabilir.
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.effect.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polyline;
import javafx.stage.Stage;
public class Polyanna extends Application {
@Override
public void start(Stage stage) {
Polyline polyline = new Polyline();
polyline.getPoints().addAll(50.0, 50.0,
200.0, 100.0,
100.0, 200.0
);
polyline.setStrokeWidth(8);
DropShadow borderEffect = new DropShadow(
BlurType.THREE_PASS_BOX, Color.BLUE, 2, 1, 0, 0
);
polyline.setEffect(borderEffect);
stage.setScene(
new Scene(
new Group(polyline),
250, 250
)
);
stage.show();
}
public static void main(String\[\] args) {
launch(args);
}
}
alternatif seçenek Dolgu ve çizgi yerine çoklu çizgi ile
Polygon çıkarmaktır. Bir Polyline için puan bir dizi alır ve oluşturmak için
shape intersection capabilities kullanabilirsiniz işin ;-)
bir parça (yani giriş diziden Poligon noktalarının eşleşen bir dizi üreten bir rutin yazabilirsiniz İstediğiniz en yakın şeyi elde etmenin en kolay yolu ile doldurabileceğiniz ve inme yapabileceğiniz keyfi bir şekil. Bu yaklaşımla, sınır renklerinin konturu için çizgi kapakları, azaltma ve çizgi birleştirme ayarları gibi şeylerle ilgili programatik kontrolünüz vardır.
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.stage.Stage;
public class PolyIntersect extends Application {
private static final double W = 250;
private static final double H = 250;
@Override
public void start(Stage stage) {
Polyline polyline = new Polyline();
polyline.getPoints().addAll(50.0, 50.0,
200.0, 100.0,
100.0, 200.0
);
polyline.setStrokeWidth(8);
Rectangle bg = new Rectangle(0, 0, W, H);
Shape shape = Shape.intersect(bg, polyline);
shape.setFill(Color.BLACK);
shape.setStroke(Color.BLUE);
shape.setStrokeType(StrokeType.OUTSIDE);
shape.setStrokeWidth(2);
stage.setScene(
new Scene(
new Group(shape),
W, H
)
);
stage.setResizable(false);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Kontrol bu [soru] (http://stackoverflow.com/questions/28764190/javafx-line-fill-color/28765099#28765099). Polyline'nızı bir dizi koleksiyona dönüştürebilir ve aynı çözümü uygulayabilirsiniz. Ancak, birleştirmelerde sorunlarınız olacak. –
Amacımın tek bir Polyline düğümüyle kalmasını sağlamak olduğunu düşünürsek, bu yaklaşım işe yaramayacaktır. Düğümü diğer düğümlere ayırmayı veya onu işlemek için farklı bir düğüm türü kullanmayı gerektirmeyen bir çözüme ihtiyacım var. Açık olmak gerekirse, eğer cevap “bu mümkün değil” ise, bunu benim ihtiyaçlarına uymayan bir çözümden daha çok duymayı tercih ederim. – ctg