Тип QML RecursiveBlur
Многократно выполняет размытие, обеспечивая сильный эффект размытия. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.14 |
| С момента: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
Подробное описание
Эффект RecursiveBlur смягчает изображение, размывая его алгоритмом, который использует рекурсивную обратную связь для многократного размытия источника. Эффект может давать более размытые результаты, чем GaussianBlur или FastBlur, но результат генерируется асинхронно и занимает больше времени.
| Источник | Применённый эффект |
|---|---|
Примечание: Этот эффект доступен при работе с OpenGL.
Пример
Следующий пример демонстрирует, как применить этот эффект.
import QtQuick 2.12
import QtGraphicalEffects 1.12
Item {
width: 300
height: 300
Image {
id: bug
source: "images/bug.jpg"
sourceSize: Qt.size(parent.width, parent.height)
smooth: true
visible: false
}
RecursiveBlur {
anchors.fill: bug
source: bug
radius: 7.5
loops: 50
}
} Документация по свойствам
cached : bool
Это свойство позволяет кэшировать выходные пиксели эффекта для повышения производительности рендеринга.
Каждый раз при изменении источника или свойств эффекта пиксели в кэше должны обновляться. Потребление памяти увеличивается, так как для хранения выходных данных эффекта требуется дополнительный буфер памяти.
Рекомендуется отключить кэширование при анимации источника или свойств эффекта.
По умолчанию свойство установлено в false.
loops : int
Это свойство определяет количество итераций размытия, которые будут выполнены для источника. При изменении свойства начинается процесс итерационного размытия. Если значение уменьшается или изменяется с нуля на ненулевое, создается моментальный снимок источника. Моментальный снимок используется в качестве отправной точки для процесса.
Цикл итераций пытается выполняться как можно быстрее. Скорость может быть ограничена VSYNC или временем, необходимым для одного шага размытия, или обоими. Иногда может потребоваться выполнять размытие с более медленным темпом. В этом случае удобно контролировать свойство с помощью анимации, которая увеличивает значение.
Значение изменяется от 0 до бесконечности. По умолчанию свойство установлено в 0.
| Примеры вывода с различными значениями loops | ||
|---|---|---|
| loops: 4 | loops: 20 | loops: 70 |
| radius: 7.5 | radius: 7.5 | radius: 7.5 |
progress : real
Это свойство содержит ход асинхронного процесса размытия источника от 0,0 (ничего не размыто) до 1,0 (завершено).
radius : real
Это свойство определяет расстояние соседних пикселей, которые влияют на размытие отдельных пикселей. Более большой радиус обеспечивает лучшее качество, но замедляет рендеринг.
Примечание: Значение радиуса в этом эффекте не должно часто изменяться или анимироваться. Правильный способ использования — установить правильное значение и сохранить его неизменным на протяжении всего процесса итеративного размытия.
Значение изменяется от 0 (без размытия) до 16,0 (максимальный шаг размытия). По умолчанию свойство установлено в 0.0 (без размытия).
| Примеры вывода с различными значениями radius | ||
|---|---|---|
| radius: 2.5 | radius: 4.5 | radius: 7.5 |
| loops: 20 | loops: 20 | loops: 20 |
source : variant
Это свойство определяет элемент-источник, который будет размыт.
Примечание: Нельзя разрешить эффекту включать сам себя, например, установив для источника родительский элемент эффекта.
transparentBorder : bool
Это свойство определяет поведение размытия вблизи краёв элемента, где размытие пикселей зависит от пикселей за пределами краёв источника.
Если свойство установлено в true, пиксели за пределами источника интерпретируются как прозрачные, что аналогично расширению OpenGL clamp-to-border. Размытие расширяется немного за пределы области элемента эффекта.
Если свойство установлено в false, пиксели за пределами источника интерпретируются как содержащие тот же цвет, что и пиксели на краю элемента, что аналогично поведению OpenGL clamp-to-edge. Размытие не расширяется за пределы области элемента эффекта.
По умолчанию свойство установлено в false.
| Примеры вывода с различными значениями transparentBorder | ||
|---|---|---|
| transparentBorder: false | transparentBorder: true | |
| loops: 20 | loops: 20 | |
| radius: 7.5 | radius: 7.5 |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtgraphicaleffects-recursiveblur.html