如何在QtQuick 2.0上爲Rectangle
視覺項目繪製陰影效果?
我喜歡爲我的主窗口繪製陰影(我有一個透明且沒有裝飾的窗口)如何在QtQuick 2.0上爲矩形創建陰影效果
回答
至於修剪陰影問題的解決方法,你可以把你Rectangle
在Item
,與其它附加保證金採取的帳戶模糊半徑,以及集裝箱上應用的影子:
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
}
}
有趣的問題...我一直在尋找更好的方法來做到這一點。這是我暫時對QML Rectangle實現陰影效果的快速和骯髒的方法。
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
}
}
}
謝謝你,但結果影子非常平坦。我喜歡有一個光滑的影子 – 2013-03-19 02:12:18
@ S.M.Mousavi是的,我明確同意。讓它看起來更平滑的唯一方法就是用漸變來欺騙......我希望有更好的選擇。 – stackunderflow 2013-03-19 18:31:41
謝謝@stackunderflow反正:) – 2013-03-19 19:31:46
只需使用QtGraphicalEffects
模塊中的DropShadow
即可。
一個完整,工作示例:
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
}
}
注意,你會看到這樣一些警告:
文件:///opt/Qt5.0.1/5.0.1/ gcc_64/qml/QtGraphicalEffects/DropShadow.qml:391:5: QML SourceProxy:檢測到屬性「輸出」的綁定循環 file:///opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/private/ GaussianDirectionalBlur.qml:66:5: QML SourceProxy:檢測屬性「output」012的綁定循環file:///opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml:61:5: QML SourceProxy:檢測屬性「輸出」的綁定循環 file:/// opt/Qt5.0.1/5.0.1/gcc_64/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml:66:5: QML SourceProxy:檢測屬性「output」的綁定循環 file:///opt/Qt5.0.1/ 5.0.1/gcc_64/qml/QtGraphicalEffects/private/GaussianDirectionalBlur.qml:61:5: QML SourceProxy:檢測到屬性「輸出」的綁定循環 file:///opt/Qt5.0.1/5.0.1/gcc_64/ qml/QtGraphicalEffects/private/GaussianGlow.qml:53:5:QML SourceProxy:檢測屬性「輸出」的綁定循環
這些警告是QTBUG-28521,已在Qt 5.0.2中修正(在撰寫本文時尚未發佈)。幸運的是,除了惱人的控制檯輸出之外,沒有任何實際問題。
不!結果影子非常堅實/平坦。我喜歡有一個光滑的陰影。 – 2013-03-19 02:09:51
我敢打賭,它不平穩淡出的原因是因爲這個問題:http://stackoverflow.com/q/14576547/331041 – cgmb 2013-03-19 02:32:30
我同意...我猜這是我的問題 – 2013-03-19 09:51:14
我試過代碼上面,它實際上增加了一個陰影,雖然在我的情況下,簡單地添加另一個矩形與一個偏移量位給我一個效果,我更喜歡。
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
}
接下來您可以添加要在其上陰影的矩形,並調用它rect_withShadow
- 1. 如何在UIImage邊界上創建陰影效果
- 2. 帶圓角矩形和陰影的UIView:陰影出現在矩形上方
- 3. 在Highcharts中,如何在solidgauge中創建輝光/陰影效果?
- 4. 如何在artisteer模板周圍創建陰影效果呢?
- 5. 如何在uitableviewcell中創建陰影效果?
- 6. 如何在滾動時創建UIScrollView,UITableView的陰影效果?
- 7. iOS:CALayer陰影只有矩形?
- 8. 如何使用文字陰影創建此photoshop效果
- 9. 如何用褪色的側邊欄創建CSS陰影效果
- 10. 如何使用Expression Blend創建內部陰影效果
- 11. 用4x3矩陣創建平面陰影?
- 12. 如何在透明矩形上繪製陰影?
- 13. 是否可以爲內嵌文本創建箱陰影效果?
- 14. 帆布陰影/發光效果在半透明形狀上?
- 15. 如何在矩形中創建矩形?
- 16. 如何在Actionscript 3的矩形內創建燈光效果?
- 17. 如何在Java中創建「冷卻矩形」效果?
- 18. 創建雙箱陰影效果(如兩個聚光燈)
- 19. 插圖陰影效果
- 20. 二維陰影效果 - 圓上的點
- 21. jquery.com的陰影效果
- 22. 如何更改gnome3陰影效果
- 23. UISegmentedControl的陰影效果?
- 24. 創建OpenGL陰影
- 25. 如何在css3中創建陰影框
- 26. UIBezierpath陰影效果 - iOs
- 27. 如何在大字體上製作內部陰影效果?
- 28. UIView最簡單的(矩形)陰影
- 29. 帶有浮動陰影的動畫陰影效果
- 30. 將角度(陰影)和距離(從陰影轉換爲文本)動態轉換爲文字陰影效果
我忘了它,但是您應該在Item容器上指定'visible:false',因爲DropShadow效果會獨立複製源項目,所以它將避免奇怪的渲染問題。 – TheBootroo 2013-03-27 11:02:17
呀!這個技巧解決了我的問題...謝謝:) – 2013-03-27 17:34:13