如何在 QML 中获得颜色的不透明版本?
How do I get the opaque version of a colour in QML?
我正在构建一个自定义控件,它通过在彼此的顶部绘制多个矩形来伪造部分圆角的矩形。我想在此控件中使用一种从其他地方动态获取的颜色——有时该颜色具有 alpha 分量(半透明)。当然,这对我来说根本不起作用,因为多个矩形的情况意味着 alpha 将显示矩形分层。
是否有一个函数可以用来将颜色的 alpha 部分设置为完全不透明,而让其余颜色保持不变?
您可以访问和设置单独的颜色组件,如下所示:
someColor.a = 1 // set alpha to 1 for opaque
如果您询问在渲染器混合所有内容后获取像素值,没有有效的方法可以做到这一点。
如果您知道混合的所有颜色,您可以手动混合它们。
您可以在 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()
我正在构建一个自定义控件,它通过在彼此的顶部绘制多个矩形来伪造部分圆角的矩形。我想在此控件中使用一种从其他地方动态获取的颜色——有时该颜色具有 alpha 分量(半透明)。当然,这对我来说根本不起作用,因为多个矩形的情况意味着 alpha 将显示矩形分层。
是否有一个函数可以用来将颜色的 alpha 部分设置为完全不透明,而让其余颜色保持不变?
您可以访问和设置单独的颜色组件,如下所示:
someColor.a = 1 // set alpha to 1 for opaque
如果您询问在渲染器混合所有内容后获取像素值,没有有效的方法可以做到这一点。
如果您知道混合的所有颜色,您可以手动混合它们。
您可以在 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()