Тип QML RecursiveBlur
Многократно размывает изображение, создавая сильный эффект размытия. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.0 |
| С момента: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
Подробное описание
Эффект RecursiveBlur смягчает изображение, размывая его алгоритмом, который использует рекурсивный цикл обратной связи для многократного размытия источника. Этот эффект может давать более размытые результаты, чем GaussianBlur или FastBlur, но результат вычисляется асинхронно и занимает больше времени.
| Источник | Примененный эффект |
|---|---|
Примечание: Этот эффект доступен при работе с OpenGL.
Пример
Следующий пример демонстрирует применение эффекта.
import QtQuick 2.0
import QtGraphicalEffects 1.0
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.9/qml-qtgraphicaleffects-recursiveblur.html