qt5控制台应用程序的Gamma校正

时间:2015-07-07 11:07:10

标签: qt qml qtquick2

下面的代码是Qt文档中的示例,它基本上解释了如何将属性gamma调整为特定的Item

import QtQuick 2.0
import QtGraphicalEffects 1.0

Item {
    width: 300
    height: 300

    Image {
        id: bug
        source: "images/bug.jpg"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }

    GammaAdjust {
        anchors.fill: bug
        source: bug
        gamma: 0.45
    }
}

有没有办法将整个伽玛校正设置为整个应用程序,以便可以按照我想要的方式校正颜色深度,而不是默认值。

类似的东西:

  

xrandr - 输出DVI-0 --gamma 2:2:1

2 个答案:

答案 0 :(得分:1)

使用属性绑定。创建Settings.qml

Item
{
    property double gammaValue: 0.45
}

然后

Item {
    width: 300
    height: 300

    Image {
        id: bug
        source: "images/bug.jpg"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }

    GammaAdjust {
        anchors.fill: bug
        source: bug
        gamma: appSettings.gammaValue
    }

    Settings {
        id: appSettings
    }
}

答案 1 :(得分:1)

如果我理解你的要求,那么你想要访问命令行参数。在QML中,您可以import QtQuick 2.0 import QtGraphicalEffects 1.0 Item { width: 300 height: 300 // gammaIndex will be 0 if --gamma not given, otherwise index of value property int gammaIndex: Qt.application.arguments.indexOf("--gamma") + 1; // fallback default value as its own property for clarity property real defaultGamma: 1.0 // rely on short-circuiting logic, result is either //valid or //default // an invalid number will give value 0, so --gamma 0 is rejected too property real gamma: gammaIndex > 0 && Qt.application.arguments[gammaIndex] > 0 && Qt.application.arguments[gammaIndex] //valid || defaultGamma //default Image { id: bug source: "images/bug.jpg" sourceSize: Qt.size(parent.width, parent.height) smooth: true visible: false } GammaAdjust { anchors.fill: bug source: bug gamma: parent.gamma } } 访问它们。这是一个粗略的解决方案,修改为您的问题代码:

DateTime