0

OpacityMask在 Android 上遇到问题。如果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。

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

4

1 回答 1

1

在后台设置mipmap为我解决了这个问题。这是一个最小的示例代码:trueImage

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
    }
}
于 2015-10-09T16:02:21.287 回答