Spec-Zone.ru › Qt 5.6

Тип QML Glow

Создаёт ореол, подобный свечению, вокруг исходного элемента. Подробнее...

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

Элемент

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

Свойства

  • cached : псевдоним
  • color : псевдоним
  • radius : псевдоним
  • samples : псевдоним
  • source : псевдоним
  • spread : псевдоним
  • transparentBorder : псевдоним

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

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

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

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

Пример

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

import QtQuick 2.0
import QtGraphicalEffects 1.0

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
    }
}

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

cached : псевдоним

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

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

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

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

color : псевдоним

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

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

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

color: #ffffff color: #00ff00 color: #aa00ff00
radius: 8 radius: 8 radius: 8
samples: 17 samples: 17 samples: 17
spread: 0.5 spread: 0.5 spread: 0.5

radius : псевдоним

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

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

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

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

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

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

radius: 0 radius: 6 radius: 12
samples: 25 samples: 25 samples: 25
color: #ffffff color: #ffffff color: #ffffff
spread: 0 spread: 0 spread: 0

samples : псевдоним

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

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

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

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

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

source : псевдоним

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

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

spread : псевдоним

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

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

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

spread: 0.0 spread: 0.5 spread: 1.0
radius: 8 radius: 8 radius: 8
samples: 17 samples: 17 samples: 17
color: #ffffff color: #ffffff color: #ffffff

transparentBorder : псевдоним

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

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

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

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

import QtQuick 2.0
import QtGraphicalEffects 1.0

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/archives/qt-5.6/qml-qtgraphicaleffects-glow.html

Spec-Zone.ru

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