全体として、私はあなたの質問で概説したグループベースのアプローチが好きです。それはあなたの特定の状況に合っていないことは残念ですが、この質問に遭遇する他の人にとっては、そのアプリケーションのための好ましい解決策かもしれません。
あなたは、境界線の色を生成するためにあなたのPolyLineにDropShadow効果を適用することができます。これは、あなたが望むかもしれないし、そうでないかもしれない角のために少し丸みを帯びた端で終わるでしょう。
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);
}
}
別のオプションは、塗りと線ではなくポリラインでPolygonを描くことです。あなたは、ポリラインのポイントの配列を取得し、作成するshape intersection capabilitiesを使用することができ、作業;-)
のビットで(すなわち、入力アレイからポリゴンの点のマッチング配列を生成するルーチンを書くことができあなたが記入してストロークすることができる任意の形状は、あなたが望むものに最も近い何かを得る最も簡単な方法で終わる可能性があります。このアプローチでは、境界線の色の線の線のキャップ、マイターリング、線の結合の設定などをプログラムで制御できます。
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);
}
}
この[質問](http://stackoverflow.com/questions/28764190/javafx-line-fill-color/28765099#28765099)を確認してください。ポリラインを線の集まりに変換し、同じソリューションを適用することができます。しかし、結合でレンダリングの問題が発生します。 –
私の目標は、単一のポリラインノードにとどまることだとすれば、そのアプローチは機能しません。私は、ノードを他のノードに分割することや、別のタイプのノードを使用してそれをレンダリングすることを伴わないソリューションが必要です。明確にするために、答えが「それは不可能」であれば、私の要求に合わない解決策を取るよりも、そのことを聞いてみたいと思います。 – ctg