GaussianBlur QML Type
Wendet einen hochwertigeren Weichzeichnungseffekt an. Mehr...
| Import Statement: | import Qt5Compat.GraphicalEffects |
| Since: | QtGraphicalEffects 1.0 |
| Inherits: |
Eigenschaften
- cached : bool
- deviation : real
- radius : real
- samples : int
- source : variant
- transparentBorder : bool
Ausführliche Beschreibung
Hinweis: Die Komponente „ MultiEffect “ bietet einen Weichzeichner-Effekt mit einigen Leistungsvorteilen. Bei neuem Code sollte sie als Alternative zur Verwendung von Qt- Graphical Effects “ in Betracht gezogen werden.
Der „GaussianBlur“-Effekt macht das Bild weicher, indem er es mit einem Algorithmus verwischt, der die Gaußsche Funktion zur Berechnung des Effekts verwendet. Der Effekt liefert eine höhere Qualität als „ FastBlur “, wird jedoch langsamer gerendert.
Insbesondere erfordert die Änderung der Eigenschaften des Gaußschen Weichzeichners in vielen Fällen eine vollständige Neuerstellung des Shader-Codes, sodass die Animation der Effekteiteigenschaften sowohl zu einer schlechten Leistung führen als auch viel Cache-Speicherplatz beanspruchen kann. Daher sollte für animierte Weichzeichner in der Regel FastBlur bevorzugt werden.
| Quelle | Effekt angewendet |
|---|---|
|
|
Hinweis: Dieser Effekt ist bei Ausführung mit OpenGL verfügbar.
Beispiel
Das folgende Beispiel zeigt, wie der Effekt angewendet wird.
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
}
}Die Live-Ausführung einer Unschärfe ist rechenintensiv. Ein gaussischer Vollbild-Weichzeichner mit selbst einer moderaten Anzahl von Samples läuft nur auf High-End-Grafikhardware mit 60 fps.
Dokumentation der Eigenschaften
cached : bool
Mit dieser Eigenschaft können die Ausgabepixel des Effekts zwischengespeichert werden, um die Rendering-Leistung zu verbessern. Bei jeder Änderung der Quell- oder Effekteigenschaften müssen die Pixel im Cache aktualisiert werden. Der Speicherverbrauch steigt, da für die Speicherung der Effekt-Ausgabe ein zusätzlicher Speicherpuffer benötigt wird.
Es wird empfohlen, den Cache zu deaktivieren, wenn die Eigenschaften der Quelle oder des Effekts animiert werden.
Standardmäßig ist die Eigenschaft auf „ false “ gesetzt.
deviation : real
Diese Eigenschaft ist ein Parameter der Gauß-Funktion, der bei der Berechnung der Gewichte benachbarter Pixel für die Unschärfe verwendet wird. Eine größere Abweichung lässt das Bild unschärfer erscheinen, mindert jedoch auch die Qualität der Unschärfe. Ein sehr großer Abweichungswert führt dazu, dass der Effekt ein wenig so aussieht, wie ihn beispielsweise ein Box-Blur-Algorithmus erzeugt. Ein zu kleiner Abweichungswert macht den Effekt für die Pixel in der Nähe des Radius kaum noch wahrnehmbar.

Das obige Bild zeigt die Gauß-Funktion mit zwei verschiedenen Abweichungswerten: gelb (1) und cyan (2,7). Die y-Achse zeigt die Gewichte, die x-Achse den Pixelabstand.
Der Wert reicht von 0,0 (keine Abweichung) bis inf (maximale Abweichung). Standardmäßig ist die Abweichung an den Radius gebunden. Wenn der Radius zunimmt, wird die Abweichung automatisch linear erhöht. Bei einem Radiuswert von 8 beträgt der Standardwert für die Abweichung etwa 2,7034. Dieser Wert stellt einen Kompromiss zwischen der Unschärfequalität und der allgemeinen Unschärfe dar.
| Ausgabebeispiele mit unterschiedlichen Abweichungswerten | ||
|---|---|---|
|
|
|
| Abweichung: 1 | Abweichung: 2 | Abweichung: 4 |
| radius: 8 | radius: 8 | radius: 8 |
| samples: 16 | samples: 16 | samples: 16 |
radius : real
Diese Eigenschaft legt den Abstand der benachbarten Pixel fest, die die Unschärfe eines einzelnen Pixels beeinflussen. Ein größerer Radius verstärkt den Unschärfeeffekt.
Die ideale Unschärfe wird erreicht, indem „ samples “ und „ radius “ so gewählt werden, dass „ samples = 1 + radius * 2 “ gilt, zum Beispiel:
| Radius | Abtastwerte |
|---|---|
| 0 (keine Unschärfe) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
Der Wert reicht von 0,0 (keine Unschärfe) bis unendlich. Standardmäßig ist die Eigenschaft auf „ floor(samples / 2.0) “ gesetzt.
| Ausgabebeispiele mit verschiedenen Radiuswerten | ||
|---|---|---|
|
|
|
| radius: 0 | radius: 4 | radius: 8 |
| samples: 16 | samples: 16 | samples: 16 |
| deviation: 3 | deviation: 3 | deviation: 3 |
Hinweis: Die Eigenschaft „ radius “ dient zur Berechnung der Größe des Offscreen-Puffers des Effekts. Höhere Werte führen zu größeren Speicherzuweisungen.
samples : int
Diese Eigenschaft legt fest, wie viele Abtastwerte pro Pixel bei der Berechnung der Unschärfe berücksichtigt werden. Ein höherer Wert sorgt für eine bessere Qualität, verlangsamt jedoch die Darstellung.
Idealerweise sollte dieser Wert doppelt so groß sein wie der höchste erforderliche Radiuswert plus 1. Wenn der Radius beispielsweise zwischen 0,0 und 4,0 animiert wird, sollte die Anzahl der Abtastwerte auf 9 gesetzt werden.
Standardmäßig ist die Eigenschaft auf „ 9 “ gesetzt.
Hinweis: Diese Eigenschaft ist nicht für die Animation vorgesehen. Eine Änderung dieser Eigenschaft kann dazu führen, dass die zugrunde liegenden OpenGL-Shader neu kompiliert werden müssen.
source : variant
Diese Eigenschaft definiert das Quellelement, das unscharf gestellt werden soll.
Hinweis: Es wird nicht unterstützt, den Effekt auf sich selbst anzuwenden, beispielsweise indem „source“ auf das übergeordnete Element des Effekts gesetzt wird.
transparentBorder : bool
Diese Eigenschaft definiert das Unschärfeverhalten an den Rändern des Elements, wo die Pixelunschärfe durch die Pixel außerhalb der Quellränder beeinflusst wird.
Wenn die Eigenschaft auf „ true “ gesetzt ist, werden die Pixel außerhalb der Quelle als transparent interpretiert, was der OpenGL-Erweiterung „clamp-to-border“ ähnelt. Die Unschärfe wird leicht über den Bereich des Effektelements hinaus erweitert.
Wenn die Eigenschaft auf „ false “ gesetzt ist, werden die Pixel außerhalb der Quelle so interpretiert, dass sie dieselbe Farbe wie die Pixel am Rand des Elements haben, was dem „clamp-to-edge“-Verhalten von OpenGL ähnelt. Die Unschärfe erstreckt sich nicht über den Bereich des Effektelements hinaus.
Standardmäßig ist die Eigenschaft auf „ false “ gesetzt.
© 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.









