Spec-Zone.ru › Qt 5.15

Тип Glow QML

Создаёт ореол-эффект свечения вокруг исходного элемента. Подробнее...

Заявление об импорте: import QtGraphicalEffects 1.15
С момента: QtGraphicalEffects 1.0
Наследует:

Элемент

  • Список всех членов, включая унаследованные

Свойства

  • кэширован : псевдоним
  • цвет : псевдоним
  • радиус : псевдоним
  • образцы : псевдоним
  • источник : псевдоним
  • распространение : псевдоним
  • прозрачнаяГраница : псевдоним

Подробное описание

Эффект Glow размывает альфа-канал источника и окрашивает его цветом цвета, помещая его позади источника, создавая ореол или свечение вокруг объекта. Качество размытого края можно контролировать с помощью образцов и радиуса, а интенсивность свечения — с помощью распространения.

Источник Применённый эффект

Свечение создаётся путём размытия изображения в реальном времени с помощью гауссова размытия. Выполнение размытия в реальном времени — ресурсоёмкая операция. Полностью-экранное гауссово размытие даже с умеренным количеством образцов будет выполняться только со скоростью 60 кадров в секунду на графическом оборудовании высокого класса.

Примечание: Этот эффект доступен при работе с OpenGL.

Пример

Следующий пример демонстрирует, как применить эффект.

import QtQuick 2.12
import QtGraphicalEffects 1.12

Item {
    width: 300
    height: 300

    Rectangle {
        anchors.fill: parent
        color: "black"
    }

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

    Glow {
        anchors.fill: butterfly
        radius: 8
        samples: 17
        color: "white"
        source: butterfly
    }
}

Документация по свойствам

кэширован : псевдоним

Это свойство позволяет кэшировать выходные пиксели эффекта для повышения производительности рендеринга.

Каждый раз, когда изменяются свойства источника или эффекта, пиксели в кэше должны быть обновлены. Потребление памяти увеличивается, поскольку для хранения выходных данных эффекта требуется дополнительный буфер памяти.

Рекомендуется отключать кэширование при анимации свойств источника или эффекта.

По умолчанию свойство установлено в false.

цвет : псевдоним

Это свойство определяет значение цвета RGBA, используемое для свечения.

По умолчанию свойство установлено в "white".

Примеры вывода с различными значениями цвета

цвет: #ffffff цвет: #00ff00 цвет: #aa00ff00
радиус: 8 радиус: 8 радиус: 8
образцы: 17 образцы: 17 образцы: 17
распространение: 0,5 распространение: 0,5 распространение: 0,5

радиус : псевдоним

Радиус определяет мягкость свечения. Больший радиус делает края свечения более размытыми.

В зависимости от значения радиуса, значение образцов должно быть достаточно большим для обеспечения визуального качества.

Идеальное размытие достигается при выборе samples и radius таким образом, чтобы samples = 1 + radius * 2, например:

Радиус Образцы
0 (нет размытия) 1
1 3
2 5
3 7

По умолчанию свойство установлено в floor(samples/2).

Примеры вывода с различными значениями радиуса

радиус: 0 радиус: 6 радиус: 12
образцы: 25 образцы: 25 образцы: 25
цвет: #ffffff цвет: #ffffff цвет: #ffffff
распространение: 0 распространение: 0 распространение: 0

образцы : псевдоним

Это свойство определяет количество образцов, взятых на пиксель при вычислении размытия смягчения краёв. Большее значение даёт лучшее качество, но рендеринг происходит медленнее.

В идеале, это значение должно быть в два раза больше наибольшего требуемого значения радиуса плюс единица, например:

Радиус Образцы
0 (нет размытия) 1
1 3
2 5
3 7

По умолчанию свойство установлено в 9.

Это свойство не предназначено для анимации. Изменение этого свойства приведёт к перекомпиляции базовых шейдеров OpenGL.

источник : псевдоним

Это свойство определяет исходный элемент, который будет использоваться в качестве источника для создаваемого свечения.

Примечание: Нельзя позволить эффекту включать себя, например, установив источник в родительский элемент эффекта.

распространение : псевдоним

Это свойство определяет, насколько большая часть цвета свечения усиливается возле краёв источника.

Значения находятся в диапазоне от 0,0 до 1,0. По умолчанию свойство установлено в 0.5.

Примечание: Реализация оптимизирована для средних и низких значений распространения. В зависимости от источника, значения распространения, близкие к 1,0, могут давать визуально асимметричные результаты.

Примеры вывода с различными значениями распространения

распространение: 0,0 распространение: 0,5 распространение: 1,0
радиус: 8 радиус: 8 радиус: 8
образцы: 17 образцы: 17 образцы: 17
цвет: #ffffff цвет: #ffffff цвет: #ffffff

прозрачнаяГраница : псевдоним

Это свойство определяет, имеет ли эффект прозрачную границу.

Когда установлено в true, внешняя часть элемента дополняется прозрачным краем, что делает использование образцов за пределами текстуры источника прозрачным, вместо пикселей края. Без этого свойства изображение с непрозрачными краями не получит размытых краёв.

По умолчанию свойство установлено в true. Установите его в false, если у источника уже есть прозрачный край, чтобы немного ускорить размытие.

В приведённом фрагменте слева прямоугольник имеет прозрачные границы и размытые края, в то время как справа — нет.

import QtQuick 2.12
import QtGraphicalEffects 1.12

Rectangle {
    width: 180
    height: 100

    Row {
        anchors.centerIn: parent
        spacing: 16

        Rectangle {
            id: normalRect
            width: 60
            height: 60
            color: "black"
            radius: 10
            layer.enabled: true
            layer.effect: Glow {
                samples: 15
                color: "blue"
                transparentBorder: false
            }
        }

        Rectangle {
            id: transparentBorderRect
            width: 60
            height: 60
            color: "black"
            radius: 10
            layer.enabled: true
            layer.effect: Glow {
                samples: 15
                color: "blue"
                transparentBorder: true
            }
        }
    }
}

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtgraphicaleffects-glow.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API