Тип 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