Sur cette page

DropShadow QML Type

Génère une ombre douce derrière l'élément source. En savoir plus...

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

Item

Propriétés

Description détaillée

Remarque : le composant « MultiEffect » offre un effet d’ombre portée présentant certains avantages en termes de performances. Pour les nouveaux codes, il convient de l’envisager comme une alternative à l’utilisation de Qt Graphical Effects.

L'effet DropShadow floute le canal alpha de l'entrée, colorise le résultat et le place derrière l'objet source pour créer une ombre douce. La couleur de l'ombre peut être modifiée à l'aide de la propriété color. L'emplacement de l'ombre peut être modifié à l'aide des propriétés horizontalOffset et verticalOffset.

SourceEffet appliqué

Illustration colorée représentant un papillon

Papillon avec une ombre portée derrière lui

L’ombre douce est créée en floutant l’image en temps réel à l’aide d’un flou gaussien. Le floutage en temps réel est une opération coûteuse en ressources. Un flou gaussien en plein écran, même avec un nombre modéré d’échantillons, ne fonctionnera qu’à 60 images par seconde sur du matériel graphique haut de gamme.

Lorsque la source est statique, la propriété ` cached ` peut être définie pour allouer un autre tampon afin d’éviter d’appliquer le flou à chaque rendu.

Remarque : cet effet est disponible lors de l’exécution avec OpenGL.

Exemple

L'exemple suivant montre comment appliquer l'effet.

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
    }
}

Documentation des propriétés

cached : alias

Cette propriété permet de mettre en cache les pixels de sortie de l'effet afin d'améliorer les performances de rendu. Chaque fois que les propriétés de la source ou de l'effet sont modifiées, les pixels du cache doivent être mis à jour. La consommation de mémoire augmente, car un tampon de mémoire supplémentaire est nécessaire pour stocker la sortie de l'effet.

Il est recommandé de désactiver le cache lorsque les propriétés de la source ou de l’effet sont animées.

Par défaut, la propriété est définie sur « false ».

color : alias

Cette propriété définit la valeur de couleur RGBA utilisée pour l'ombre.

Par défaut, cette propriété est définie sur "black".

Exemples de rendu avec différentes valeurs de couleur

Papillon avec une ombre noire

Papillon aux reflets bleus

Papillon avec une ombre semi-transparente

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

horizontalOffset : real

Les propriétés `HorizontalOffset` et ` verticalOffset ` définissent le décalage de l’ombre affichée par rapport à la position de l’élément ` DropShadow `. Souvent, l'élément « DropShadow » est ancré de manière à occuper tout l'espace de l'élément source. Dans ce cas, si les propriétés HorizontalOffset et verticalOffset sont définies sur 0, l'ombre est affichée exactement sous l'élément source. En modifiant ces propriétés de décalage, l'ombre peut être positionnée par rapport à l'élément source.

Les valeurs vont de -inf à inf. Par défaut, les propriétés sont définies sur 0.

Exemples de rendu avec différentes valeurs de horizontalOffset

Décalage de l'ombre vers la gauche

Ombre centrée en dessous

Décalage de l'ombre vers la droite

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
Exemples de résultats avec différentes valeurs d'verticalOffset

Ombre centrée en bas

Ombre avec décalage vertical

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

radius : int

Le rayon définit la douceur de l'ombre. Un rayon plus grand rend les bords de l'ombre plus flous.

Pour obtenir un flou idéal, il faut choisir des valeurs pour « samples » et « radius » telles que « samples = 1 + radius * 2 », par exemple :

RayonÉchantillons
0 (pas de flou)1
13
25
37

Par défaut, la propriété est définie sur « floor(samples/2) ».

Exemples de résultats avec différentes valeurs de rayon

Ombre nette de rayon 0

Ombre douce d'un rayon de 6

Ombre très douce d'un rayon de 12

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

Remarque : la propriété « radius » sert à calculer la taille du tampon hors écran de l’effet. Des valeurs plus élevées entraîneront des allocations de mémoire plus importantes.

samples : alias

Ce paramètre définit le nombre d'échantillons prélevés par pixel lors du calcul du flou d'adoucissement des contours. Une valeur plus élevée offre une meilleure qualité, mais ralentit le rendu.

Idéalement, cette valeur devrait être égale au double de la valeur de rayon la plus élevée requise, plus un, par exemple :

RayonÉchantillons
0 (pas de flou)1
13
25
37

Par défaut, la propriété est définie sur « 9 ».

Cette propriété n'est pas destinée à être animée. La modification de cette propriété entraînera la recompilation des shaders OpenGL sous-jacents.

source : alias

Cette propriété définit l'élément source qui sera utilisé comme source pour l'ombre générée.

Remarque : il n'est pas possible de faire en sorte que l'effet s'inclue lui-même, par exemple en définissant la source sur le parent de l'effet.

spread : alias

Cette propriété définit dans quelle mesure la couleur de l'ombre est intensifiée près des bords de la source.

La valeur est comprise entre 0,0 et 1,0. Par défaut, la propriété est définie sur 0.0.

Exemples de rendu avec différentes valeurs de « spread »

Ombre sans étalement

Ombre à diffusion moyenne

Ombre avec extension maximale

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

Cette propriété détermine si l'effet présente ou non une bordure transparente.

Lorsqu'elle est définie sur « true », le contour de l'élément est agrandi d'une bordure transparente d'un pixel de large, ce qui fait que l'échantillonnage en dehors de la texture source utilise la transparence au lieu des pixels du contour. Sans cette propriété, une image dont les contours sont opaques n'aura pas d'ombre floue.

Dans l’image ci-dessous, le rectangle de gauche possède des bordures transparentes et des bords flous, contrairement à celui de droite :

Par défaut, cette propriété est définie sur « 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
            }
        }
    }
}

Rectangles illustrant la différence entre les paramètres de bordure transparente

verticalOffset : real

Les propriétés `HorizontalOffset` et `VerticalOffset` définissent le décalage de l'ombre affichée par rapport à la position de l'élément ` DropShadow `. Souvent, l’élément « DropShadow » est ancré de manière à occuper tout l’espace de l’élément source. Dans ce cas, si les propriétés HorizontalOffset et verticalOffset sont définies sur 0, l’ombre est affichée exactement sous l’élément source. En modifiant ces propriétés de décalage, l’ombre peut être positionnée par rapport à l’élément source.

Les valeurs vont de -inf à inf. Par défaut, ces propriétés sont définies sur « 0 ».

Exemples de résultats avec différentes valeurs d’ horizontalOffset

Décalage de l'ombre vers la gauche

Ombre centrée en dessous

Décalage de l'ombre vers la droite

horizontalOffset: -20 horizontalOffset: 0 horizontalOffset: 20
radius: 4radius: 4radius: 4
samples: 9samples: 9samples: 9
color: #000000color: #000000color: #000000
décalage vertical : 0décalage vertical : 0décalage vertical : 0
spread: 0spread: 0spread: 0
Exemples de résultats avec différentes valeurs de verticalOffset

Ombre centrée en bas

Ombre avec décalage vertical

horizontalOffset: 0 horizontalOffset: 0
radius: 4radius: 8
samples: 9samples: 17
color: #000000color: #000000
décalage vertical : 0décalage vertical : 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.