OpacityMask on Android



我在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。

这个问题有解决方案吗?还是我做错了什么?

设置mipmaptrue的背景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
    }
}

相关内容

  • 没有找到相关文章

最新更新