DropShadow QML Type
Erzeugt einen weichen Schatten hinter dem Quellobjekt. Mehr...
| Import Statement: | import Qt5Compat.GraphicalEffects |
| Since: | QtGraphicalEffects 1.0 |
| Inherits: |
Eigenschaften
- cached : alias
- color : alias
- horizontalOffset : real
- radius : int
- samples : alias
- source : alias
- spread : alias
- transparentBorder : alias
- verticalOffset : real
Ausführliche Beschreibung
Hinweis: Die Komponente „ MultiEffect “ bietet einen Schlagschatteneffekt mit einigen Leistungsvorteilen. Bei neuem Code sollte sie als Alternative zur Verwendung von Qt XML- Graphical Effects in Betracht gezogen werden.
Der DropShadow-Effekt verwischt den Alphakanal der Eingabe, färbt das Ergebnis ein und platziert es hinter dem Quellobjekt, um einen weichen Schatten zu erzeugen. Die Farbe des Schattens kann über die Eigenschaft „ color “ geändert werden. Die Position des Schattens lässt sich mit den Eigenschaften „ horizontalOffset “ und „ verticalOffset “ anpassen.
| Quelle | Angewandter Effekt |
|---|---|
|
|
Der weiche Schatten wird erzeugt, indem das Bild in Echtzeit mit einem Gaußschen Weichzeichner verwischt wird. Die Echtzeit-Weichzeichnung ist ein rechenintensiver Vorgang. Ein Gaußscher Weichzeichner im Vollbildmodus läuft selbst bei einer moderaten Anzahl von Samples nur auf High-End-Grafikhardware mit 60 fps.
Wenn die Quelle statisch ist, kann die Eigenschaft „ cached “ so eingestellt werden, dass ein weiterer Puffer zugewiesen wird, um zu vermeiden, dass die Unschärfe bei jedem Zeichnen erneut angewendet wird.
Hinweis: Dieser Effekt ist bei der Ausführung mit OpenGL verfügbar.
Beispiel
Das folgende Beispiel zeigt, wie der Effekt angewendet wird.
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
}
}Eigenschaftsdokumentation
cached : alias
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.
color : alias
Diese Eigenschaft legt den RGBA-Farbwert fest, der für den Schatten verwendet wird.
Standardmäßig ist die Eigenschaft auf „ "black" “ gesetzt.
| Beispiele für die Ausgabe mit verschiedenen Farbwerten | ||
|---|---|---|
|
|
|
| color: #000000 | color: #0000ff | Farbe: #aa000000 |
| radius: 8 | radius: 8 | radius: 8 |
| samples: 17 | samples: 17 | samples: 17 |
| horizontalOffset: 0 | horizontalOffset: 0 | horizontalOffset: 0 |
| verticalOffset: 20 | verticalOffset: 20 | verticalOffset: 20 |
| spread: 0 | spread: 0 | spread: 0 |
horizontalOffset : real
Die Eigenschaften „HorizontalOffset“ und „ verticalOffset “ legen den Versatz des gerenderten Schattens im Vergleich zur Position des Elements „ DropShadow “ fest. Häufig wird das „ DropShadow “-Element so verankert, dass es das Quellelement ausfüllt. Sind in diesem Fall die Eigenschaften „HorizontalOffset“ und „ verticalOffset “ auf 0 gesetzt, wird der Schatten genau unter dem Quellelement gerendert. Durch Ändern der Versatzeigenschaften kann der Schatten relativ zum Quellelement positioniert werden.
Die Werte reichen von -inf bis inf. Standardmäßig sind die Eigenschaften auf „ 0 “ gesetzt.
| Ausgabebeispiele mit unterschiedlichen „horizontalOffset“-Werten | ||
|---|---|---|
|
|
|
| horizontalOffset: -20 | horizontalOffset: 0 | horizontalOffset: 20 |
| radius: 4 | radius: 4 | radius: 4 |
| samples: 9 | samples: 9 | samples: 9 |
| color: #000000 | color: #000000 | color: #000000 |
| verticalOffset: 0 | verticalOffset: 0 | verticalOffset: 0 |
| spread: 0 | spread: 0 | spread: 0 |
| Ausgabebeispiele mit unterschiedlichen Werten für „ verticalOffset “ | ||
|---|---|---|
|
| |
| horizontalOffset: 0 | horizontalOffset: 0 | |
| radius: 4 | radius: 8 | |
| samples: 9 | samples: 17 | |
| color: #000000 | color: #000000 | |
| verticalOffset: 0 | verticalOffset: 20 | |
| spread: 0 | spread: 0 |
radius : int
Der Radius bestimmt die Weichheit des Schattens. Ein größerer Radius lässt die Ränder des Schattens unschärfer erscheinen.
Die ideale Unschärfe wird erreicht, indem man „ samples “ und „ radius “ so wählt, dass „ samples = 1 + radius * 2 “ gilt, zum Beispiel:
| Radius | Abtastwerte |
|---|---|
| 0 (keine Unschärfe) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
Standardmäßig ist die Eigenschaft auf „ floor(samples/2) “ gesetzt.
| Ausgabebeispiele mit unterschiedlichen Radiuswerten | ||
|---|---|---|
|
|
|
| radius: 0 | radius: 6 | radius: 12 |
| samples: 25 | samples: 25 | samples: 25 |
| color: #000000 | color: #000000 | color: #000000 |
| horizontalOffset: 0 | horizontalOffset: 0 | horizontalOffset: 0 |
| verticalOffset: 20 | verticalOffset: 20 | verticalOffset: 20 |
| spread: 0 | spread: 0 | spread: 0 |
Hinweis: Die Eigenschaft „ radius “ wird zur Berechnung der Größe des Offscreen-Puffers des Effekts verwendet. Höhere Werte führen zu größeren Speicherzuweisungen.
samples : alias
Diese Eigenschaft legt fest, wie viele Abtastwerte pro Pixel bei der Berechnung der Kantenglättung verwendet werden. Ein höherer Wert führt zu einer besseren Qualität, verlangsamt jedoch die Darstellung.
Idealerweise sollte dieser Wert doppelt so groß sein wie der höchste erforderliche Radiuswert plus eins, zum Beispiel:
| Radius | Abtastwerte |
|---|---|
| 0 (keine Unschärfe) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
Standardmäßig ist die Eigenschaft auf „ 9 “ gesetzt.
Diese Eigenschaft ist nicht für Animationen vorgesehen. Eine Änderung dieser Eigenschaft führt dazu, dass die zugrunde liegenden OpenGL-Shader neu kompiliert werden.
source : alias
Diese Eigenschaft definiert das Quellelement, das als Quelle für den generierten Schatten verwendet werden soll.
Hinweis: Es wird nicht unterstützt, dass der Effekt sich selbst einbezieht, beispielsweise indem die Quelle auf das übergeordnete Element des Effekts gesetzt wird.
spread : alias
Diese Eigenschaft legt fest, wie stark die Schattenfarbe in der Nähe der Ränder der Lichtquelle verstärkt wird.
Der Wert liegt zwischen 0,0 und 1,0. Standardmäßig ist die Eigenschaft auf „ 0.0 “ eingestellt.
| Ausgabebeispiele mit unterschiedlichen Ausbreitungswerten | ||
|---|---|---|
|
|
|
| spread: 0,0 | spread: 0,5 | spread: 1,0 |
| radius: 8 | radius: 8 | radius: 8 |
| samples: 17 | samples: 17 | samples: 17 |
| color: #000000 | color: #000000 | color: #000000 |
| horizontalOffset: 0 | horizontalOffset: 0 | horizontalOffset: 0 |
| verticalOffset: 20 | verticalOffset: 20 | verticalOffset: 20 |
transparentBorder : alias
Diese Eigenschaft legt fest, ob der Effekt einen transparenten Rand hat oder nicht.
Bei der Einstellung „ true “ wird der äußere Rand des Elements mit einem 1 Pixel breiten transparenten Rand aufgefüllt, sodass bei der Abtastung außerhalb der Quelltextur Transparenz anstelle der Randpixel verwendet wird. Ohne diese Eigenschaft erhält ein Bild mit undurchsichtigen Rändern keinen weichen Schatten.
In der Abbildung unten weist das Rechteck auf der linken Seite transparente Ränder und unscharfe Kanten auf, während dies beim Rechteck auf der rechten Seite nicht der Fall ist:
Standardmäßig ist diese Eigenschaft auf „ true “ gesetzt.
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
Die Eigenschaften „HorizontalOffset“ und „VerticalOffset“ legen den Versatz des gerenderten Schattens im Verhältnis zur Position des „ DropShadow “-Elements fest. Häufig wird das „ DropShadow “-Element so verankert, dass es das Quellelement ausfüllt. Sind in diesem Fall die Eigenschaften „HorizontalOffset“ und „verticalOffset“ auf 0 gesetzt, wird der Schatten exakt unter dem Quellelement gerendert. Durch Ändern der Versatzeigenschaften kann der Schatten relativ zum Quellelement positioniert werden.
Die Werte reichen von -inf bis inf. Standardmäßig sind die Eigenschaften auf „ 0 “ gesetzt.
| Ausgabebeispiele mit unterschiedlichen „ horizontalOffset “-Werten | ||
|---|---|---|
|
|
|
| horizontalOffset: -20 | horizontalOffset: 0 | horizontalOffset: 20 |
| radius: 4 | radius: 4 | radius: 4 |
| samples: 9 | samples: 9 | samples: 9 |
| color: #000000 | color: #000000 | color: #000000 |
| vertikaler Versatz: 0 | vertikalerVersatz: 0 | vertikalerVersatz: 0 |
| spread: 0 | spread: 0 | spread: 0 |
| Ausgabebeispiele mit unterschiedlichen „verticalOffset“-Werten | ||
|---|---|---|
|
| |
| horizontalOffset: 0 | horizontalOffset: 0 | |
| radius: 4 | radius: 8 | |
| samples: 9 | samples: 17 | |
| color: #000000 | color: #000000 | |
| vertikaler Versatz: 0 | vertikaler Versatz: 20 | |
| spread: 0 | spread: 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.













