我在QML中使用PieSeries作为创建临时掩码的方法。 我有一个圆形动画gif,在它上面,我添加了一个PieSeries。 PieSeries有3个PieSlices。其中2个是"黑色"基本上阻挡了gif的相应部分。剩下的PieSlice是透明的。 这很好用,但我希望2个黑色的PieSlices有一个渐变,这样它们的边缘就不那么明显了(渐变透明度)。
我尝试使用带有OpacityMask的LinearGradient,如here所述,但在PieSlice上使用时没有任何效果。
任何建议都将受到赞赏:)
这是我的代码:
import QtQuick 2.0
import QtCharts 2.2
import QtGraphicalEffects 1.0
Item {
anchors.fill: parent //Fill the gif area
ChartView {
id: chart
anchors.centerIn: parent
height: parent.height+200
width: parent.width
legend.visible: false
antialiasing: false
backgroundColor: "transparent"
PieSeries {
id: pieOuter
size: 1.5
holeSize: 0.2
PieSlice { id: black1; value: 1; color: "black"; borderColor: "transparent" }
PieSlice { id: valSlice; value: d.val; color: "transparent"; borderColor: "transparent" }
PieSlice { id: black2; value: 1 - d.val; color: "black"; borderColor: "transparent" }
}
}
OpacityMask{
source: mask
maskSource: black1
}
LinearGradient {
id: mask
anchors.fill: black1
gradient: Gradient {
GradientStop { position: 0.2; color: "transparent"}
GradientStop { position: 0.5; color: "white" }
}
}
}
注意:d.val此处包含0到1之间的值
修改 一些图像可以帮助我看到我想要实现的目标: 我开始使用的GIF(source - 原始文件太大而无法附加):
这就是目前的动画效果:
这就是我想要的实际外观(这里描述的是d.val):