このページでは

DropShadow QML Type

対象アイテムの背後にソフトな影を生成します。詳細...

Import Statement: import Qt5Compat.GraphicalEffects
Since: QtGraphicalEffects 1.0
Inherits:

Item

プロパティ

詳細な説明

注: MultiEffect コンポーネントは 、パフォーマンス面でいくつかの利点を持つドロップシャドウ効果を提供します。新規開発においては、QtのGraphical Effects を使用する代わりに、本コンポーネントの利用を検討すべきです。

DropShadowエフェクトは、入力のアルファチャンネルをぼかし、その結果に色を付け、ソースオブジェクトの背後に配置することで、柔らかな影を作成します。影の色は、color プロパティを使用して変更できます。影の位置は、horizontalOffset およびverticalOffset プロパティを使用して変更できます。

ソース適用されたエフェクト

色鮮やかな蝶のイラスト

背後にドロップシャドウがかかった蝶

ソフトシャドウは、ガウスぼかしを使用して画像をリアルタイムでぼかすことで作成されます。リアルタイムでのぼかし処理は負荷の高い操作です。サンプル数がそれほど多くない場合でも、フルスクリーンのガウスぼかしは、ハイエンドのグラフィックスハードウェアであっても60 fpsでしか実行されません。

ソースが静止している場合、cached プロパティを設定して別のバッファを割り当てることで、描画のたびにぼかし処理を実行する必要を回避できます。

注:この エフェクトは 、OpenGL で実行している場合に利用可能です。

例

以下の例は、このエフェクトの適用方法を示しています。

import QtQuick
import Qt5Compat.GraphicalEffects

Item {
    width: 300
    height: 300

    Rectangle {
        anchors.fill: parent
    }

    Image {
        id: butterfly
        source: "images/butterfly.png"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }

    DropShadow {
        anchors.fill: butterfly
        horizontalOffset: 3
        verticalOffset: 3
        radius: 8.0
        color: "#80000000"
        source: butterfly
    }
}

プロパティのドキュメント

cached : alias

このプロパティを使用すると、エフェクトの出力ピクセルをキャッシュして、レンダリングパフォーマンスを向上させることができます。ソースまたはエフェクトのプロパティが変更されるたびに、キャッシュ内のピクセルを更新する必要があります。エフェクトの出力を保存するために追加のメモリバッファが必要となるため、メモリ使用量が増加します。

ソースまたはエフェクトのプロパティがアニメーション化される場合は、キャッシュを無効にすることをお勧めします。

デフォルトでは、このプロパティはfalse に設定されています。

color : alias

このプロパティは、影に使用されるRGBAカラー値を定義します。

デフォルトでは、このプロパティは `"black"` に設定されています。

異なる色値を用いた出力例

黒い影を背負った蝶

青い影をまとった蝶

半透明の影を持つ蝶

color: #000000 color: #0000ff color: #aa000000
radius: 8radius: 8radius: 8
samples: 17samples: 17samples: 17
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20
spread: 0spread: 0spread: 0

horizontalOffset : real

HorizontalOffset およびverticalOffset プロパティは、DropShadow 項目の位置に対する、レンダリングされた影のオフセットを定義します。 多くの場合、DropShadow アイテムは、ソース要素全体を覆うように配置されます。この場合、HorizontalOffsetおよびverticalOffset プロパティが0に設定されていると、影はソースアイテムの真下にレンダリングされます。オフセットプロパティを変更することで、影をソースアイテムに対して相対的な位置に配置することができます。

値の範囲は -inf から inf です。デフォルトでは、これらのプロパティは `0` に設定されています。

horizontalOffsetの値を変化させた出力例

影が左にずれている

下部に影を中央揃え

影が右側にずれている

horizontalOffset: -20 horizontalOffset: 0 horizontalOffset: 20
radius: 4radius: 4radius: 4
samples: 9samples: 9samples: 9
color: #000000color: #000000color: #000000
verticalOffset: 0verticalOffset: 0verticalOffset: 0
spread: 0spread: 0spread: 0
verticalOffset の値を変えた場合の出力例

下部に影を中央揃え

垂直方向のオフセットを持つシャドウ

horizontalOffset: 0 horizontalOffset: 0
radius: 4radius: 8
samples: 9samples: 17
color: #000000color: #000000
verticalOffset: 0verticalOffset: 20
spread: 0spread: 0

radius : int

半径は、影の柔らかさを決定します。半径を大きくすると、影の縁がよりぼやけて見えます。

理想的なぼかし効果は、samples とradius を、samples = 1 + radius * 2 となるように選択することで得られます。例えば、次のような設定です。

半径サンプル数
0(ぼかしなし)1
13
25
37

デフォルトでは、このプロパティはfloor(samples/2) に設定されています。

半径の値を変えたときの出力例

半径 0 の鋭い影

半径 6 のソフトシャドウ

半径 12 の非常に柔らかいシャドウ

radius: 0 radius: 6 radius: 12
samples: 25samples: 25samples: 25
color: #000000color: #000000color: #000000
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20
spread: 0spread: 0spread: 0

注: radius プロパティは 、エフェクトのオフスクリーンバッファのサイズを計算するために使用されます。値が大きいほど、より多くのメモリが割り当てられます。

samples : alias

このプロパティは、エッジのソフト化によるぼかし計算を行う際に、1ピクセルあたり何サンプルを採取するかを定義します。値が大きいほど画質は向上しますが、レンダリングに時間がかかります。

理想的には、この値は、必要となる最大半径値の2倍に1を加えた値に設定します。例えば、

半径サンプル数
0(ぼかしなし)1
13
25
37

デフォルトでは、このプロパティは9 に設定されています。

このプロパティはアニメーションの対象となることを意図していません。このプロパティを変更すると、基盤となる OpenGL シェーダーが再コンパイルされます。

source : alias

このプロパティは、生成されるシャドウのソースとして使用されるソースアイテムを定義します。

注: エフェクトの親をソースとして設定するなど、エフェクト自体をソースに含めることはサポートされていません。

spread : alias

このプロパティは、光源のエッジ付近で影の色がどの程度強調されるかを定義します。

値の範囲は 0.0 から 1.0 です。デフォルトでは、このプロパティは0.0 に設定されています。

さまざまなspread値での出力例

スプレッドのないシャドウ

広がりが中程度のシャドウ

完全に広がった影

spread: 0.0 spread: 0.5 spread: 1.0
radius: 8radius: 8radius: 8
samples: 17samples: 17samples: 17
color: #000000color: #000000color: #000000
horizontalOffset: 0horizontalOffset: 0horizontalOffset: 0
verticalOffset: 20verticalOffset: 20verticalOffset: 20

transparentBorder : alias

このプロパティは、エフェクトに透明な境界線があるかどうかを決定します。

true に設定すると、アイテムの外周に幅1ピクセルの透明な縁が追加され、ソーステクスチャの外側をサンプリングする際に、縁のピクセルではなく透明度が使用されるようになります。このプロパティを設定しない場合、縁が不透明な画像にはぼやけた影が付きません。

下の画像では、左側の長方形は透明な境界線があり、エッジがぼやけていますが、右側の長方形にはそれがありません。

デフォルトでは、このプロパティはtrue に設定されています。

import QtQuick
import Qt5Compat.GraphicalEffects

Rectangle {
    width: 180
    height: 100

    Row {
        anchors.centerIn: parent
        spacing: 16

        Rectangle {
            id: normalRect
            width: 60
            height: 60
            radius: 10
            color: "steelblue"
            layer.enabled: true
            layer.effect: DropShadow {
                transparentBorder: false
                horizontalOffset: 8
                verticalOffset: 8
            }
        }

        Rectangle {
            id: transparentBorderRect
            width: 60
            height: 60
            radius: 10
            color: "steelblue"
            layer.enabled: true
            layer.effect: DropShadow {
                transparentBorder: true
                horizontalOffset: 8
                verticalOffset: 8
            }
        }
    }
}

透明な枠線の設定の違いを示す長方形

verticalOffset : real

HorizontalOffset および verticalOffset プロパティは、DropShadow アイテムの位置に対する、レンダリングされた影のオフセットを定義します。 多くの場合、DropShadow 項目は、ソース要素いっぱいに収まるように配置されます。この場合、HorizontalOffsetおよびverticalOffsetプロパティが0に設定されていると、影はソース項目の真下に正確にレンダリングされます。オフセットプロパティを変更することで、影をソース項目に対して相対的な位置に配置することができます。

値の範囲は -inf から inf です。デフォルトでは、これらのプロパティは `0` に設定されています。

horizontalOffset の値を変えた出力例

影が左にずれている

下部に中央揃えの影

影が右側にずれている

horizontalOffset: -20 horizontalOffset: 0 horizontalOffset: 20
radius: 4radius: 4radius: 4
samples: 9samples: 9samples: 9
color: #000000color: #000000color: #000000
垂直オフセット: 0垂直オフセット: 0verticalOffset: 0
spread: 0spread: 0spread: 0
verticalOffset の値が異なる出力例

下部に影を中央揃えにする

垂直方向のオフセットを持つシャドウ

horizontalOffset: 0 horizontalOffset: 0
radius: 4radius: 8
samples: 9samples: 17
color: #000000color: #000000
垂直オフセット: 0垂直オフセット: 20
spread: 0spread: 0

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.