image QML परिवर्तन छवि रंग




qt colors (2)

आप क्यूटी 5.2 से रंग ओवरले का उपयोग निम्नानुसार कर सकते हैं:

import QtQuick 2.0
import QtGraphicalEffects 1.0

Item {
    width: 300
    height: 300

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

    ColorOverlay {
        anchors.fill: bug
        source: bug
        color: "#ff0000"  // make image like it lays under red glass 
    }
 }

मुझे एक छवि को रंगीन कैसे करना चाहिए (प्रारूप एसवीजी या पीएनजी ... के साथ)

मैंने अपनी छवि को एक आयत के साथ कवर करने की कोशिश की जो छवि को भरती है, लेकिन मेरी छवि एक आयताकार नहीं है क्योंकि यह संपूर्ण आयत को रंग देता है और केवल छवि नहीं है

क्या qml के साथ छवि रंग बदलना संभव है? वैकल्पिक रूप से, क्या QPixmap के साथ क्यूटी (C ++) पर रंग बदलना संभव है, फिर QML मद पर QPixmap को एकीकृत करना है?

आपके सहयोग के लिए धन्यवाद। (अगर कोई समाधान नहीं है, तो मुझे अलग रंग के साथ समान मूल छवि को एक अलग छवि लोड करना होगा।)


आप ShaderEffect का उपयोग करके अपनी छवि का रंग बदल सकते हैं

ShaderEffect {
    property variant src: yourImage

    property real r: yourColor.r * yourColor.a
    property real g: yourColor.g * yourColor.a
    property real b: yourColor.b * yourColor.a

    width: yourImage.width
    height: yourImage.height

    vertexShader: "
        uniform highp mat4 qt_Matrix;
        attribute highp vec4 qt_Vertex;
        attribute highp vec2 qt_MultiTexCoord0;
        varying highp vec2 coord;

        void main() {
            coord = qt_MultiTexCoord0;
            gl_Position = qt_Matrix * qt_Vertex;
        }
    "

    fragmentShader: "
        varying highp vec2 coord;
        uniform sampler2D src;

        uniform lowp float r;
        uniform lowp float g;
        uniform lowp float b;

        void main() {
            lowp vec4 clr = texture2D(src, coord);
            lowp float avg = (clr.r + clr.g + clr.b) / 3.;
            gl_FragColor = vec4(r * avg, g * avg, b * avg, clr.a);
        }
    "
}

उपरोक्त कोड आपकी छवि को ग्रेस्कॉल में बदल देता है और फिर आपका रंग लागू होता है।





qml