GUIの中には、描画要素にドロップシャドウで影をつけたり、盛り上がったようなエンボス効果を施している場合があります。JavaFXではこのような装飾をエフェクトと呼ぶ機能で実現します。

 今月はこのエフェクトについて取りあげます。

 また、後半ではノードの回転やスケーリングなどの変形についても紹介します。

エフェクト

 前述したように、エフェクトはノードに対して装飾を加える機能です。

 標準で提供されているエフェクトを表1にまとめました。ただし、単独では使われないエフェクトもあるので、それは除いてあります。

 これらのクラスはすべてjavafx.scene.effect.Effectクラスのサブクラスとして定義されています。

表1●JavaFX 2.xのエフェクト
クラス名 説明
Blend 2種類のエフェクトをブレンドする
Bloom ノードを輝かせる
BoxBlur 矩形のぼかし
ColorAdjust 色の調整
DisplacementMap ジオメトリの調整 (凸凹をつける)
DropShadow ドロップシャドウ
GaussianBlur ガウシアンぼかし
Glow ノードを光らせる
InnerShadow ノードの内側に影をつける
Lighting エンボスなどライトに関連するエフェクト
MotionBlur 動きのあるぼかし
PerspectiveTransform 遠近法を用いた変換
Reflection 反射
SepiaTone セピア色への変換
Shadow

 BloomクラスとGlowクラスは同じようなエフェクトなのですが、Bloomはノードの外側に放射光が描画されるのに対し、Glowは単に明るく描画されるという違いがあります。

 また、ぼかしだけでも3種類あります。BoxBlurクラスは品質よりもパフォーマンスを優先させる場合に使用し、GaussianBlurクラスは品質を優先させる場合に使用します。MotionBlurクラスはノードが動いているようなぼかしになり、アニメーションなどと組み合わせて、スピード感を醸しだすために使用します。

 これらすべてのエフェクトを紹介するには分量が足りないため、今回はGaussianBlurクラス、DropShadowクラス、Reflectionクラス、Lightingクラスについて使用法を紹介します。