2015-10-09 34 views
0

我在Android上遇到OpacityMask問題。如果另一個Image設置在OpacityMask後面,您將看到黑色矩形。下面是一個最小的例子:Android上的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文件具有分辨率128×128。

有沒有解決這個問題或我做錯了什麼?

回答

1

設置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 
    } 
}