6

Qt Quick QML を使用して半透明の長方形が必要ですが、角が 1 辺のみに丸くなっています。

これは、私が望む長方形の一種です。透けて見えない場合は、角が丸いものとないものの 2 つの長方形を重ねるだけです。ただし、オーバーラップが暗くなるため、これは透明度では機能しません。

     ----------|
   /           |
 /             | 
|              |
|              |
|              |
 \             | 
   \           |   
     ----------|

誰にもアイデアはありますか?

4

1 に答える 1

10

クリッピング(パフォーマンス ドキュメントを参照) を使用して、単一の角丸長方形の角を切り取ることができます。

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    width: 300
    height: 300
    visible: true

    Item {
        width: 100
        height: 100
        anchors.centerIn: parent
        clip: true

        Rectangle {
            anchors.fill: parent
            anchors.rightMargin: -radius
            radius: 10
            color: "navajowhite"
            opacity: 0.5
        }
    }
}

レイヤーを使用して、透明度の重なりの問題を回避することもできます。

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    width: 300
    height: 300
    visible: true

    Item {
        width: 100
        height: 100
        opacity: 0.5
        layer.enabled: true
        anchors.centerIn: parent

        Rectangle {
            color: "navajowhite"
            radius: 10
            anchors.fill: parent
        }
        Rectangle {
            color: "navajowhite"
            anchors.fill: parent
            anchors.leftMargin: 10
        }
    }
}

@folibis で述べたように、すでに同様の回答があるCanvasを使用することもできます。

于 2016-11-01T08:46:06.773 に答える