我在Android上使用OpacityMask
有问题。如果另一个Image
被设置在OpacityMask
后面,你会看到黑色矩形。下面是一个最小的例子:
import QtQuick 2.5
import QtQuick.Controls 1.2
import QtGraphicalEffects 1.0
Item {
Image {
anchors.fill: parent
source: "qrc:/images/background.png"
}
Image {
id: avatarImage
source: "qrc:/images/avatar_test.png"
visible: false
// width: 128
// height: 128
}
Image {
id: avatarImageMask
source: "qrc:/images/avatar_mask.png"
visible: false
// width: 128
// height: 128
}
OpacityMask {
source: avatarImage
maskSource: avatarImageMask
anchors.fill: avatarImage
}
}
所有*.png
文件的分辨率为128x128。
这个问题有解决方案吗?还是我做错了什么?
设置mipmap
为true
的背景Image
解决了我的问题。下面是一个最小的示例代码:
import QtQuick 2.5
import QtQuick.Controls 1.2
import QtGraphicalEffects 1.0
Item {
Image {
mipmap: true // <-- for some cost of performance, but mask will work
anchors.fill: parent
source: "qrc:/images/background.png"
}
Image {
id: avatarImage
source: "qrc:/images/avatar_test.png"
visible: false
// width: 128
// height: 128
}
Image {
id: avatarImageMask
source: "qrc:/images/avatar_mask.png"
visible: false
// width: 128
// height: 128
}
OpacityMask {
source: avatarImage
maskSource: avatarImageMask
anchors.fill: avatarImage
}
}