Wie kann ich einen Schlagschatten für eine Rectangle
visuelle Element auf QtQuick 2.0 zeichnen?
Ich mag einen Schlagschatten für mein Hauptfenster zeichnen (Ich habe ein transparentes und nicht dekoriertes Fenster)Wie man Schlagschatten für Rectangle auf QtQuick 2.0 erstellt
Antwort
Als Abhilfe für das Schatten Ausgabe abgeschnitten, können Sie Ihre Rectangle
in einem Item
, mit zusaetzliche Rand setzen Verwischradius in Rechnung zu tragen, und gelten Schatten auf diesem Container:
import QtQuick 2.0
import QtGraphicalEffects 1.0
Item {
width: 320
height: 240
Item {
id: container
anchors.centerIn: parent
width: rect.width + (2 * rectShadow.radius)
height: rect.height + (2 * rectShadow.radius)
visible: false
Rectangle {
id: rect
width: 100
height: 50
color: "orange"
radius: 7
antialiasing: true
border {
width: 2
color: "red"
}
anchors.centerIn: parent
}
}
DropShadow {
id: rectShadow
anchors.fill: source
cached: true
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 16
color: "#80000000"
smooth: true
source: container
}
}
Interessante Frage ... Ich habe nach einem besseren Weg gesucht, dies zu tun. Dies ist meine schnelle und schmutzige Art, einen Schlagschatteneffekt für ein QML Rectangle zur Zeit zu erreichen.
Rectangle{
width: 500
height: 500
color: "dark grey"
Rectangle {
id: backgroundRect
width: 200
height: 150
radius: 5
anchors.centerIn: parent
color: "red"
Rectangle {
id: dropShadowRect
property real offset: Math.min(parent.width*0.025, parent.height*0.025)
color: "purple"
width: parent.width
height: parent.height
z: -1
opacity: 0.75
radius: backgroundRect.radius + 2
anchors.left: parent.left
anchors.leftMargin: -offset
anchors.top: parent.top
anchors.topMargin: offset
}
}
}
Danke, aber das Ergebnis Schatten ist sehr flach. Ich mag es, einen glatten Schatten zu haben –
@ S.M. Mousavi ja, ich stimme definitiv zu. Der einzige Weg, um es glatter aussehen zu lassen wäre, mit Farbverläufen herumzualbern ... Ich wünschte, es gäbe eine bessere Option. – stackunderflow
Danke @stackunderflow trotzdem :) –
Verwenden Sie einfach DropShadow
vom QtGraphicalEffects
Modul.
Ein komplettes, funktionierendes Beispiel:
import QtQuick 2.0
import QtGraphicalEffects 1.0
Rectangle {
width: 640
height: 480
color: "blue"
Rectangle {
id: rect
anchors.centerIn: parent
width: 100
height: 100
color: "red"
}
DropShadow {
anchors.fill: rect
cached: true
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 16
color: "#80000000"
source: rect
}
}
Beachten Sie, dass Sie eine Reihe von Warnungen wie diese sehen:
Datei: ///opt/Qt5.0.1/5.0.1/ gcc_64/qml/QtGraphicalEffects/DropShadow.qml: 391: 5: QML-Quellproxy: Bindungsschleife für Eigenschaft "Ausgabe" erkannt file: ///opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/private/ GaussianDirectionalBlur.qml: 66: 5: QML SourceProxy: Bindungsschleife für Eigenschaft "Ausgabe" 012 erkanntfile: ///opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml: 61: 5: QML SourceProxy: Bindungsschleife für Eigenschaft "Ausgabe" erkannt file: /// opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/privat/GaussianDirectionalBlur.qml: 66: 5: QML SourceProxy: Bindungsschleife für Eigenschaft "Ausgabe" erkannt file: ///opt/Qt5.0.1/ 5.0.1/gcc_64/qml/QtGraphicalEffects/privat/GaussianDirectionalBlur.qml: 61: 5: QML SourceProxy: Bindungsschleife für Eigenschaft "Ausgabe" erkannt file: ///opt/Qt5.0.1/5.0.1/gcc_64/ qml/QtGraphicalEffects/private/GaussianGlow.qml: 53: 5: QML SourceProxy: Bindeschleife für Eigenschaft "output" erkannt
Diese Warnungen sind QTBUG-28521, die in Qt 5.0.2 behoben wurde (die zum Zeitpunkt der Erstellung dieses Artikels noch nicht veröffentlicht wurde). Glücklicherweise gibt es kein wirkliches Problem, abgesehen von der nervigen Konsolenausgabe.
Nein! Ergebnis Schatten ist sehr solide/flach. Ich mag es, einen sanften Schatten zu haben. –
Ich wette, der Grund, warum es nicht reibungslos ausblendet, ist wegen dieses Problems: http://Stackoverflow.com/q/14576547/331041 – cgmb
Ich stimme zu ...Ich vermute, dass dies mein Problem ist. –
ich den Code versucht oben und es fügt tatsächlich einen Schatten hinzu, obwohl in meinem Fall, einfach ein anderes Rechteck mit einem Bit auf einem Offset zu addieren gab mir einen Effekt, den ich mehr mochte.
Rectangle{
id: rec_Shadow
height:rect_withShadow.height
width: rect_withShadow.width
border.color: "#B3B3B3"
color: "#C5C5C5"
anchors{
verticalCenter: rect_withShadow.verticalCenter
horizontalCenter: rect_withShadow.horizontalCenter
horizontalCenterOffset: 5
verticalCenterOffset: 5
}
radius: rect_withShadow.radius
}
Als nächstes fügen Sie das Rechteck auf dem Sie den Schatten wollen, und Sie nennen es rect_withShadow
- 1. Wie erstellt man eine Bildlaufleiste in QtQuick 2.0?
- 2. QtQuick 2.0 Szene oben auf Direct3D Szene
- 3. Rendering benutzerdefinierte opengl in qt5 qtquick 2.0
- 4. Wie installiert man QtQuick 1.1 auf QT 5.1.1
- 5. Wie erstellt man gruppierte/verschachtelte Eigenschaften?
- 6. Floating Rectangle auf dem Bildschirm
- 7. iPhone iOS Wie erstellt man Grafikeffekte wie Schlagschatten, etc? Welche Effekte sind in iOS integriert?
- 8. HTML/CSS: Wie erstellt Google diesen Schlagschatten über seine Karten?
- 9. Wie erstellt man die Attributierungsdirektive in angular 2.0?
- 10. Wie erstellt man eine Download-Datei in JSF 2.0?
- 11. Schlagschatten auf Bootstrap-Karussell Punkte
- 12. Filter: Schlagschatten nur auf Hintergrund
- 13. Schlagschatten nicht auf li Elemente
- 14. QtQuick QML SQL C++
- 15. Schlagschatten auf iPhone Uhr App "Alarm" Registerkarte
- 16. Datentrigger für Rectangle innerhalb von ControlTemplate
- 17. JPanel Schlagschatten
- 18. Draw Schlagschatten
- 19. Wie erstellt man einen Screenshot von QWidget?
- 20. C++/QML-Projekt kompatibel mit Qt 4 (QtQuick 1.x) und Qt 5 (QtQuick 2.x)
- 21. Make Image Schlagschatten
- 22. QtQuick, Dynamische Bilder und C++
- 23. Rectangle Koordinaten in Bezug auf den Rotationswinkel
- 24. einfachste (rechteckige) Schlagschatten für eine UIView
- 25. Verhindern Rectangle Style von Anwenden auf DataGrid
- 26. Wie man eclipse-ide work auf dem playframework 2.0 einrichtet
- 27. Wie erstellt man ein Vorschaubild für hochgeladene Bilder auf DropZone.js?
- 28. Wie man web.xml für Dropwizard-Anwendung erstellt
- 29. Wie erstellt man API-Schlüssel für GCM?
- 30. Wie erstellt man .IPA für Native React?
Ich habe es vergessen, aber Sie sollten 'visible: false' im Item-Container angeben, da der DropShadow-Effekt das Quellelement selbst dupliziert, so dass seltsame Rendering-Probleme vermieden werden. – TheBootroo
Ja !!! Dieser Trick löste mein Problem ... Danke :) –