JavaFXを使用して、ドロップシャドウと反射エフェクトを一緒に連結してキャンバスにテキストを描画しようとしています。JavaFXでDropShadowエフェクトにリフレクションを適用する
次のコードでは、赤いテキストが反映され、元のテキストと反映されたテキストにドロップシャドウが適用されます。
Canvas canvas = new Canvas(400,400);
GraphicsContext context = canvas.getGraphicsContext2D();
context.setFont(new Font("Arial Bold", 48));
context.setFill(Color.RED);
DropShadow shadow = new DropShadow(6, 2, 2, Color.BLACK);
Reflection reflect = new Reflection(10, 1.0, 1.0, 0.0);
shadow.setInput(reflect);
context.setEffect(shadow);
context.fillText("Hello, world!", 100,100);
しかし、影が現実的な効果のために最初に適用される必要があるため、反射では「逆方向」に表示されます。私は次のように上記のコードのsetInput
とsetEffect
ラインを変更することにより、効果が適用される順序を逆にすることによってこれを達成しようとした:
reflect.setInput(shadow);
context.setEffect(reflect);
しかし、結果は反射のみが印加されることです。私は全く影を見ることができません。
ドロップシャドウが適用されない/表示されないのはなぜですか?
希望する効果を得るためにこのコードを書き直すにはどうすればよいですか(可能な場合は、効果の合成のみを使用します)。
ありがとうございます - 基本的に画像の効果を最初から書き直しました。しかし、私は主に与えられたコードが機能していない理由に興味があり、効果の構成のみを使用して目的の効果を達成できるかどうかを知りたい。上記の私の質問をもっと明確に更新しました。しかし、あなたの努力のおかげですべて同じ! –