如何在QML中获取颜色的不透明版本?

时间:2017-08-26 21:19:23

标签: qt qml qt5 qtquick2 qtquickcontrols2

我正在构建一个自定义控件,通过在彼此的顶部绘制几个矩形来伪造部分圆角矩形。我想在这个控件中使用一种从其他地方动态获取的颜色 - 有时这种颜色有一个alpha组件(半透明)。当然,这对我来说根本不起作用,因为多个矩形情况意味着alpha将显示矩形分层。

我是否可以使用一种功能将颜色的alpha部分设置为完全不透明度并保留其余颜色?

2 个答案:

答案 0 :(得分:1)

您可以访问和设置各个颜色组件,如下所示:

someColor.a = 1 // set alpha to 1 for opaque

如果您在渲染器混合了所有内容后询问获取像素的值,则没有有效的方法。

如果你知道混合的所有颜色,你可以手动混合它们。

答案 1 :(得分:0)

您可以定义一个函数来使用javascript(或C ++中相同的函数)做到这一点:

function makeTransparent(color, alphaPercent) {
    return color.a *= alphaPercent;
}  

并将其用作:

Rectangle {
    property color myColor: "#33000000"    //<-- e.g. semi-transparent black
    color: makeTransparent(mycolor, 1.2);
}

注意:我的函数使颜色的透明度为Qt.darker()Qt.lighter()