Sur cette page

GaussianBlur QML Type

Applique un effet de flou de meilleure qualité. Plus d'informations...

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

Item

Propriétés

Description détaillée

Note : Le composant MultiEffect fournit un effet de flou avec quelques avantages en termes de performances. Pour les nouveaux codes, il devrait être considéré comme une alternative à l'utilisation de Qt Graphical Effects.

L'effet GaussianBlur adoucit l'image en la rendant floue grâce à un algorithme qui utilise la fonction gaussienne pour calculer l'effet. L'effet produit une meilleure qualité que FastBlur, mais est plus lent à rendre.

En particulier, la modification des propriétés de l'effet de flou gaussien nécessitera dans de nombreux cas de reconstruire le code du shader à partir de zéro, de sorte que l'animation des propriétés de l'effet risque d'être peu performante et de nécessiter une grande quantité d'espace cache. C'est pourquoi il est préférable d'utiliser FastBlur pour les flous animés.

SourceEffet appliqué

Remarque : cet effet est disponible lorsqu'il est exécuté avec OpenGL.

Exemple

L'exemple suivant montre comment appliquer l'effet.

import QtQuick
import QtGraphicalEffects

Item {
    width: 300
    height: 300

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

    GaussianBlur {
        anchors.fill: bug
        source: bug
        radius: 8
        samples: 16
    }
}

L'application d'un effet de flou en direct est une opération coûteuse. Le 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.

Documentation sur les propriétés

cached : bool

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 une mémoire tampon 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.

deviation : real

Cette propriété est un paramètre de la fonction gaussienne utilisée pour calculer les poids des pixels voisins pour le flou. Un écart plus important rend l'image plus floue, mais réduit également la qualité du flou. Une valeur d'écart très élevée donne à l'effet un aspect un peu similaire à ce que produit, par exemple, un algorithme de flou de boîte. Une valeur d'écart trop faible rend l'effet insignifiant pour les pixels proches du rayon.

L'image ci-dessus montre la fonction gaussienne avec deux valeurs d'écart différentes, jaune (1) et cyan (2,7). L'axe des y indique les poids, l'axe des x indique la distance entre les pixels.

La valeur va de 0,0 (pas de déviation) à inf (déviation maximale). Par défaut, l'écart est lié au rayon. Lorsque le rayon augmente, l'écart est automatiquement augmenté de façon linéaire. Avec un rayon de 8, la valeur par défaut de l'écart est d'environ 2,7034. Cette valeur permet d'obtenir un compromis entre la qualité du flou et le flou global.

Exemples de résultats avec différentes valeurs d'écart

écart : 1 écart : 2 écart : 4
radius: 8radius: 8radius: 8
samples: 16samples: 16samples: 16

radius : real

Cette propriété définit la distance entre les pixels voisins qui affectent le flou d'un pixel individuel. Un rayon plus grand augmente l'effet de flou.

Le flou idéal est obtenu en sélectionnant samples et radius de telle sorte que samples = 1 + radius * 2, par exemple :

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

La valeur est comprise entre 0,0 (pas de flou) et inf. Par défaut, la propriété est définie sur floor(samples / 2.0).

Exemples de sortie avec différentes valeurs de rayon

rayon : 0 rayon : 4 radius : 8
samples: 16samples: 16samples: 16
deviation: 3deviation: 3deviation: 3

samples : int

Cette propriété définit le nombre d'échantillons prélevés par pixel lors du calcul du flou. Une valeur plus élevée permet d'obtenir une meilleure qualité, mais le rendu est plus lent.

Idéalement, cette valeur devrait être deux fois plus grande que la plus grande valeur de rayon requise plus 1, par exemple, si le rayon est animé entre 0.0 et 4.0, les échantillons devraient être fixés à 9.

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

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

source : variant

Cette propriété définit l'élément source qui sera rendu flou.

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

transparentBorder : bool

Cette propriété définit le comportement du flou près des bords de l'élément, où le flou des pixels est affecté par les pixels à l'extérieur des bords de la source.

Si la propriété est définie sur true, les pixels situés à l'extérieur de la source sont interprétés comme étant transparents, ce qui est similaire à l'extension de la pince à la bordure d'OpenGL. Le flou est légèrement étendu en dehors de la zone de l'élément d'effet.

Si la propriété vaut false, les pixels situés à l'extérieur de la source sont interprétés comme contenant la même couleur que les pixels situés au bord de l'élément, ce qui est similaire au comportement "clamp-to-edge" d'OpenGL. Le flou ne s'étend pas en dehors de la zone de l'élément à effet.

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

Exemples de sortie avec différentes valeurs de transparentBorder

transparentBorder : false transparentBorder : true
radius: 8radius: 8
samples: 16samples: 16
deviation: 2.7deviation: 2.7

© 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.