Тип QML Glow
Создаёт ореол-подобное свечение вокруг исходного элемента. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.0 |
| С: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
- cached : псевдоним
- цвет : псевдоним
- радиус : псевдоним
- samples : псевдоним
- источник : псевдоним
- распространение : псевдоним
- прозрачнаяГраница : псевдоним
Подробное описание
Эффект Glow размывает альфа-канал источника и окрашивает его цветом цвет, размещая его за источником, создавая ореол или свечение вокруг объекта. Качество размытых краёв можно контролировать с помощью samples и радиуса, а интенсивность свечения — с помощью распространения.
| Источник | Применённый эффект |
|---|---|
Свечение создаётся путём живого размытия изображения с помощью гауссова размытия. Выполнение живого размытия — ресурсоёмкая операция. Полностьюэкранное гауссово размытие даже с умеренным количеством samples будет работать только с 60 кадрами в секунду на высокопроизводительной графической аппаратуре.
Примечание: Этот эффект доступен при запуске с OpenGL.
Пример
Следующий пример демонстрирует, как применить эффект.
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.
цвет : псевдоним
Это свойство определяет значение RGBA цвета, используемое для свечения.
По умолчанию свойство установлено в "white".
| Примеры вывода с различными значениями цвета | ||
|---|---|---|
| цвет: #ffffff | цвет: #00ff00 | цвет: #aa00ff00 |
| радиус: 8 | радиус: 8 | радиус: 8 |
| samples: 17 | samples: 17 | samples: 17 |
| распространение: 0,5 | распространение: 0,5 | распространение: 0,5 |
радиус : псевдоним
Радиус определяет мягкость свечения. Более большой радиус приводит к более размытым краям свечения.
В зависимости от значения радиуса, значение samples должно быть достаточно большим, чтобы обеспечить качество изображения.
Идеальное размытие достигается путём выбора samples и radius таким образом, чтобы samples = 1 + radius * 2, например:
| Радиус | Samples |
|---|---|
| 0 (без размытия) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
По умолчанию свойство установлено в floor(samples/2).
| Примеры вывода с различными значениями радиуса | ||
|---|---|---|
| радиус: 0 | радиус: 6 | радиус: 12 |
| samples: 25 | samples: 25 | samples: 25 |
| цвет: #ffffff | цвет: #ffffff | цвет: #ffffff |
| распространение: 0 | распространение: 0 | распространение: 0 |
samples : псевдоним
Это свойство определяет количество samples, взятых на пиксель при вычислении размытия по краям. Более высокое значение обеспечивает лучшее качество, но замедляет рендеринг.
В идеале это значение должно быть в два раза больше максимального значения радиуса плюс один, например:
| Радиус | Samples |
|---|---|
| 0 (без размытия) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
По умолчанию свойство установлено в 9.
Это свойство не предназначено для анимации. Изменение этого свойства приведёт к перекомпиляции базовых шейдеров OpenGL.
источник : псевдоним
Это свойство определяет элемент-источник, который будет использован в качестве источника для сгенерированного свечения.
Примечание: Нельзя позволять эффекту включать себя, например, устанавливая источник как родитель эффекта.
распространение : псевдоним
Это свойство определяет, насколько большая часть цвета свечения усиливается вблизи краёв источника.
Значения варьируются от 0,0 до 1,0. По умолчанию свойство установлено в 0.5.
| Примеры вывода с различными значениями распространения | ||
|---|---|---|
| распространение: 0,0 | распространение: 0,5 | распространение: 1,0 |
| радиус: 8 | радиус: 8 | радиус: 8 |
| samples: 17 | samples: 17 | samples: 17 |
| цвет: #ffffff | цвет: #ffffff | цвет: #ffffff |
прозрачнаяГраница : псевдоним
Это свойство определяет, имеет ли эффект прозрачную границу.
При установке в true, внешний вид элемента заполняется прозрачным краем, делая использование samples за пределами текстуры источника прозрачным вместо пикселей края. Без этого свойства изображение с непрозрачными краями не получит размытого края.
По умолчанию свойство установлено в 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.11/qml-qtgraphicaleffects-glow.html