Тип QML GaussianBlur
Применяет размытие более высокого качества. Подробнее...
| Оператор импорта: | import QtGraphicalEffects 1.13 |
| С момента: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
- cached : bool
- deviation : real
- radius : real
- samples : int
- source : variant
- transparentBorder : bool
Подробное описание
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
}
GaussianBlur {
anchors.fill: bug
source: bug
radius: 8
samples: 16
}
} Выполнение размытия в реальном времени — дорогостоящая операция. Полное размытие Гаусса для полноэкранного изображения даже с умеренным числом выборок будет работать только со скоростью 60 кадров в секунду на графическом оборудовании высокого класса.
Документация по свойствам
cached : bool
Это свойство позволяет кэшировать выходные пиксели эффекта для повышения производительности рендеринга. Каждый раз при изменении свойств источника или эффекта пиксели в кэше должны быть обновлены. Потребление памяти увеличивается, так как требуется дополнительный буфер для хранения выходных данных эффекта.
Рекомендуется отключать кэширование, когда свойства источника или эффекта анимируются.
По умолчанию свойство установлено в false.
deviation : real
Это свойство является параметром гауссовой функции, используемой при расчете весов соседних пикселей для размытия. Большее значение отклонения приводит к более сильному размытию изображения, но также снижает качество размытия. Очень большое значение отклонения делает эффект похожим на то, что производит, например, алгоритм размытия по прямоугольнику. Слишком маленькое значение отклонения делает эффект незначительным для пикселей, близких к радиусу.
На рисунке выше показана гауссова функция с двумя разными значениями отклонения, желтым (1) и сине-голубым (2.7). Ось Y показывает веса, ось X показывает расстояние пикселей.
Значение изменяется от 0.0 (нет отклонения) до бесконечности (максимальное отклонение). По умолчанию отклонение привязано к радиусу. При увеличении радиуса отклонение автоматически увеличивается линейно. При значении радиуса 8 значение отклонения по умолчанию становится приблизительно 2.7034. Это значение обеспечивает компромисс между качеством размытия и общим уровнем размытости.
| Примеры выходных данных с различными значениями отклонения | ||
|---|---|---|
| deviation: 1 | deviation: 2 | deviation: 4 |
| radius: 8 | radius: 8 | radius: 8 |
| samples: 16 | samples: 16 | samples: 16 |
radius : real
Это свойство определяет расстояние соседних пикселей, которые влияют на размытие отдельного пикселя. Больший радиус увеличивает эффект размытия.
Идеальное размытие достигается путем выбора samples и radius таким образом, чтобы samples = 1 + radius * 2, например:
| Радиус | Выборка |
|---|---|
| 0 (нет размытия) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
Значение изменяется от 0.0 (нет размытия) до бесконечности. По умолчанию свойство установлено в floor(samples / 2.0).
| Примеры выходных данных с различными значениями радиуса | ||
|---|---|---|
| radius: 0 | radius: 4 | radius: 8 |
| samples: 16 | samples: 16 | samples: 16 |
| deviation: 3 | deviation: 3 | deviation: 3 |
samples : int
Это свойство определяет количество выборок, взятых на пиксель при вычислении размытия. Большее значение обеспечивает лучшее качество, но медленнее рендерится.
В идеале это значение должно быть в два раза больше максимального необходимого значения радиуса плюс 1, например, если радиус анимируется между 0.0 и 4.0, samples следует установить в 9.
По умолчанию свойство установлено в 9.
Примечание: Это свойство не предназначено для анимации. Изменение этого свойства может привести к повторной компиляции базовых шейдеров OpenGL.
source : variant
Это свойство определяет элемент-источник, который будет размываться.
Примечание: Нельзя позволять эффекту включать себя, например, устанавливая source на родительский элемент эффекта.
transparentBorder : bool
Это свойство определяет поведение размытия вблизи краев элемента, где размытие пикселей зависит от пикселей за пределами краев источника.
Если свойство установлено в true, пиксели за пределами источника интерпретируются как прозрачные, что аналогично расширению OpenGL clamp-to-border. Размытие немного расширяется за пределы области элемента эффекта.
Если свойство установлено в false, пиксели за пределами источника интерпретируются как содержащие тот же цвет, что и пиксели на краю элемента, что аналогично поведению OpenGL clamp-to-edge. Размытие не расширяется за пределы области элемента эффекта.
По умолчанию свойство установлено в false.
| Примеры выходных данных с различными значениями transparentBorder | ||
|---|---|---|
| transparentBorder: false | transparentBorder: true | |
| radius: 8 | radius: 8 | |
| samples: 16 | samples: 16 | |
| deviation: 2.7 | deviation: 2.7 |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-qtgraphicaleffects-gaussianblur.html