2017-12-18 332 views
0

有一個QML文件中像這樣的特定區域:如何使QML視圖的透明

Item { 
    width: 800 
    height: 600 

    Image { 
     id: background 
     width: 800 
     height: 600 
     source: "qrc:/resorces/background.png" 
    } 

    Rectangle { 
     id: transframe 
     x: 500 
     y: 200 
     width: 200 
     height: 100 
    } 

} 

如何使transframe透明的區域,然後我可以看到背景下的圖形。

+0

這將是有益的,如果你可以添加你都注意到了什麼的截圖。也許你可以設置顏色:「透明」屬性對於變換幀 –

回答

1

OpacityMask是你在找什麼。

例子:

Rectangle { 
     width: 800; height: 600 
     color: 'red' 

     Image { 
      id: background 
      width: 800; height: 600 
      source: "qrc:/resorces/background.png" 
      visible: false 
     } 
     Item { 
      id: transframe 
      width: 800; height: 600 
      visible: false 
      Rectangle { 
       x: 500; y: 200; width: 200; height: 100 
      } 
     } 
     OpacityMask { // don't forget to import QtGraphicalEffects 
      anchors.fill: background 
      source: background 
      maskSource: transframe 
      invert: true 
     } 
    } 
+1

儘管此鏈接可能回答此問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18287446) –

+0

非常感謝您的回答,OpacityMask就是我要找的。 –

+0

@Andrii我正在使用Qt 5.6,但是在Qt 5.7中引入了invert的屬性。我認爲在Qt 5.6中將maskSource作爲除transframe之外的區域可能很有用。有沒有其他方法? –

-1
Item { 
    width: 800 
    height: 600 
    Image { 
     id: background 
     width: 800 
     height: 600 
     source: "qrc:/resorces/background.png" 
    } 
    Rectangle { 
     id: transframe 
     x: 500 
     y: 200 
     width: 200 
     height: 100 
     color:"transparent" 
    } 
} 
+0

可以是透明的,但是背景中的變換幀區域仍然不透明。我仍然無法在背景下看到圖形。 –