Использование светового эффекта (яркости) в qml

Я пытаюсь создать световой эффект, который появляется на моем изображении всякий раз, когда я нажимаю на него, я пробовал следующее:

     Image {
             id: image1
             source: "../../blue_dot.png"


     BrightnessContrast {
               id:myBright
               x: image1.width/2
               y: image1.height/2
               visible: false
             }


     MouseArea{
               anchors.fill: parent

               onPressed: {
                 myBright.brightness = 1
                 myBright.visible = true
                          }
             }

         }

но, к сожалению, ничего не появляется, когда я нажимаю на свое изображение. Любые идеи о том, как я могу сделать световой эффект из изображения с помощью qml?


person CodeMaster    schedule 02.02.2015    source источник
comment
BrightnessContrast изменяет яркость. Вы хотите добиться эффекта включения/выключения? Если это так, что вы думаете о Glow? эффект?   -  person BaCaRoZzo    schedule 03.02.2015


Ответы (2)


Это не способ использовать GraphicalEffect. Ознакомьтесь с официальной документацией Qt.

Вы должны :

  • Установите для видимости изображения значение false, а для видимости эффекта — значение true.
  • Установите ширину и высоту графического эффекта равными высоте и ширине изображения (подойдет anchors.fill: image)
  • Установите для исходного свойства графического эффекта идентификатор вашего изображения.
  • OnClicked, настроить свойства контраста/яркости GraphicalEffect (по умолчанию: 0, 0)

Что-то вроде этого:

Image {
    id: image1
    source: "../../blue_dot.png"
    visible: false
}
BrightnessContrast {
    id:myBright
    anchors.fill: image1
    source: image1
}

MouseArea{
    anchors.fill: parent
    onPressed: {
        myBright.brightness==0? myBright.brightness= 0.2:myBright.brightness=0
    }
}
person Yoann Quenach de Quivillic    schedule 03.02.2015

Кажется, что некоторые необходимые свойства не установлены:

BrightnessContrast {
               id:myBright
               x: image1.width/2
               y: image1.height/2
               visible: false
               // New properties:
               source: image1
               width: 100
               height: 100

             }

Ширину и высоту я выбираю случайным образом. Вы должны заменить мои значения правильными. Но мб лучше будет использовать что-то вроде "anchors.fill: image1".

person QtRoS    schedule 03.02.2015