Delphi FMXのEffectクラス一覧と実用サンプル|画像処理・視覚効果を自在に操作
DelphiのFMX環境では、TShadowEffectやTBlurEffectなどのEffect系クラスを使って、画像に視覚効果を適用できます。
このページでは、各Effectクラスのプロパティと動作例を一覧形式で紹介し、MakeScreenshotによる画像取得方法も含めて、実用的なコードサンプルを掲載しています。
FMXでの画像処理やUI演出に役立つ構造的な理解を目指します。
以下サンプルについて
以下サンプル画像は、
IDEを起動し、[ファイル]⇒[新規作成]⇒[マルチデバイスアプリケーション -Delphi]をクリックし、
[空のアプリケーション]を選択し、
フォームに、TPanel(Panel1)をドラッグ&ドロップし、
Panel1に、TImage(Image1)をドラッグドロップし、
Image1に、TxxxxxEffectを適用しています。
| クラス | 説明 プロパティ |
|---|---|
|
エフェクトなし
|
エフェクトなし |
|
TShadowEffect
|
影効果(輪郭の外側)
|
|
TBlurEffect
|
ぼかし効果
|
|
TGlowEffect
|
グロー効果(輪郭の外側にぼかした枠)
|
|
TInnnerGlowEffect
|
内側グロー(輪郭の内側にぼかし枠)効果
|
|
TBevelEffect
|
ベベル効果(輪郭内側に奥行きのある傾斜)
|
|
TRefrectionEffect
|
鏡面反射効果(外側下部に鏡面反射効果)
|
|
TRippleEffect
|
波紋を重ね合わせる効果
|
|
TSwirlEffect
|
らせん状の渦巻きにする効果
|
|
TMagnifyEffect
|
円形領域を拡大する効果
|
|
TSmoothMagnifyEffect
|
円形領域をスムーズに拡大する効果効果
|
|
TBandsEffect
|
明るい領域の縞を作成する効果
|
|
TWaveEffect
|
波模様を施す効果
|
|
TWrapEffect
|
2本の曲線に沿って折りたたむ効果
|
|
TBandedSwirlEffect
|
縞をらせん状に回転させる効果
|
|
TPinchEffect
|
円形領域をつまむ効果
|
|
TTilerEffect
|
タイル効果
|
|
TPixelateEffect |
モザイク効果
|
|
TEmbossEffect
|
エンボス効果(浮き出させる効果)
|
|
TSharpenEffect
|
鮮明にする効果
|
|
TToonEffect
|
漫画のような陰影を付ける効果
|
|
TSepiaEffect
|
セピア効果
|
|
TPaperSketchEffect
|
スケッチ効果
|
|
TPencilStrokeEffect
|
鉛筆ストローク効果
|
|
TFillEffect
|
単色で塗りつぶす効果
|
|
TFillRGBEffect
|
非透明ピクセルを塗りつぶす効果
|
|
TNormalBlendEffect
|
2つの画像の標準ブレンド効果
|
|
THueAdjustEffect
|
全体的な色相を変更する効果
|
|
TContrastEffect
|
明るさとコントラストを変更する効果
|
|
TBloomEffect
|
明るい領域をさらに明るくする効果
|
|
TGloomEffect
|
暗い領域をさらに暗くする効果
|
|
TInvertEffect
|
色を反転させる効果 |
|
TMonochromeEffect
|
モノクロ効果 |
|
TColorKeyAlphaEffect
|
特定の色のピクセルを透明にする効果
|
|
TMaskToAlphaEffect
|
グレースケール画像をアルファでマスクされた白画像に変換する効果 |
|
TGaussianBlurEffect
|
ガウス型ぼかし効果
|
|
TBoxBlurEffect
|
ボックス型ぼかし効果
|
|
TDirectionalBlurEffect
|
指向型ぼかし効果
|
|
TRadialBlurEffect
|
放射型ぼかし効果
|
エフェクトが適用された画像(TBitmap)の取り出し方
エフェクトがImage1内部に対して適用される場合は Image1.MakeScreenshot() でTBitmapを返してくれます。
エフェクトがImage1外部に対して適用される場合は、上記サンプルの場合、親オブジェクトであるPanel1に適用されるため、
Panel1.MakeScreenshot() でTBitmapを返してくれます。
procedure TForm1.Button1Click(Sender: TObject); var bmp:TBitmap; begin //内側に適用されるエフェクトの場合 bmp:=Image1.MakeScreenshot(); //何らかの処理 bmp.Free; //外側に適用されるエフェクトの場合 bmp:=Panel1.MakeScreenshot(); //何らかの処理 bmp.Free; end;
