libro
www.tuyano.com
初心者のためのJavaFXプログラミング入門

グラフィックの特殊効果 (4/5)

作成:2015-04-11 10:46
更新:2015-04-11 10:46

■影付けと反射について

ぼかしと並んで多用される視覚効果といえば「」でしょう。影にはいくつかの種類があります。ここで簡単に整理しましょう。
・ドロップシャドー
new DropShadow(半径, 横オフセット,
    縦オフセット, 色);

図形の影がその下に落ちるような効果を「ドロップシャドー」といいます。これは「DropShadow」クラスとして用意されます。コンストラクタはいくつかありますが、もっともよく用いられるのは、影が適用される半径(影の幅)、影の縦横方向のずれ幅(オフセット)、影の色(Colorインスタンス)といったものをひと通り引数で指定する書き方が一般的でしょう。

・インナーシャドー
new InnerShadow( 半径 , 横オフセット , 縦オフセット , 色 );
図形の内部が凹んでいるように、内側に影を描くものです。これもDropShadowと同じく、引数には半径、縦横のオフセット、影の色といったものを指定します。

・リフレクション
new Reflection( 上部オフセット , フラクション , 上部透過幅 , 底部透過幅 );
これは影とはちょっと違いますが、影と同じように光の効果として表されるものです。リフレクションは、氷や水面などの上に図形があるように、その下に反転したイメージを表示するものです。引数には、その図形と反射図形との間隔、反射図形が描かれる割合(フラクション、0~1の実数)、図形の上と下の指定した割合を透過するための設定(0~1の実数)などを指定します。

実際の利用例を下に挙げておきましょう。DropShadowInnerShadowは、それほどわかりにくくはないと思います。Reflectionは、反射図形の表示幅や、上下がかすれていく感じなどを設定できるため、それぞれの引数の役割がわかれば面白い効果が得られるようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

public void createShape(Pane root){
    Rectangle r = new Rectangle(20, 20, 100, 50);
    r.setFill(Color.BLUE);
    r.setStroke(Color.RED);
    r.setStrokeWidth(5);
    r.setEffect(new DropShadow(20.0, 10.0, 5.0, Color.BLACK));
    root.getChildren().add(r);
    
    Ellipse e = new Ellipse(220, 50, 70, 30);
    e.setFill(Color.YELLOW);
    e.setStroke(Color.GREEN);
    e.setStrokeWidth(5);
    e.setEffect(new Reflection(5.0, 2.0, 0.5, 0));
    root.getChildren().add(e);
    
    Text t = new Text(50, 250, "Hello!");
    t.setFont(new Font(80));
    t.setFill(Color.YELLOW);
    t.setStroke(Color.GREEN);
    t.setStrokeWidth(1);
    t.setEffect(new InnerShadow(2.0, 2.0, 1.0, Color.BLACK));
    root.getChildren().add(t);
}

※関連コンテンツ

「初心者のためのJavaFXプログラミング入門」に戻る