Тип QML GaussianBlur
Применяет размытие более высокого качества. Подробнее...
| Оператор импорта: | import QtGraphicalEffects 1.12 |
| С: | 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. Это значение представляет собой компромисс между качеством размытия и общим размытием.
| Примеры выходных данных с разными значениями отклонения | ||
|---|---|---|
| отклонение: 1 | отклонение: 2 | отклонение: 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).
| Примеры выходных данных с разными значениями радиуса | ||
|---|---|---|
| радиус: 0 | радиус: 4 | радиус: 8 |
| samples: 16 | samples: 16 | samples: 16 |
| deviation: 3 | deviation: 3 | deviation: 3 |
samples : int
Это свойство определяет количество образцов, взятых на пиксель при вычислении размытия. Большее значение обеспечивает более высокое качество, но рендеринг медленнее.
В идеале это значение должно быть в два раза больше наибольшего необходимого значения радиуса плюс 1, например, если радиус анимируется между 0,0 и 4,0, образцы должны быть установлены в 9.
По умолчанию свойство установлено в 9.
Примечание: Это свойство не предназначено для анимации. Изменение этого свойства может привести к перекомпиляции базовых шейдеров OpenGL.
source : variant
Это свойство определяет элемент источника, который будет размыт.
Примечание: Не допускается включение эффекта в сам себя, например, путем установки источника в родительский элемент эффекта.
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.12/qml-qtgraphicaleffects-gaussianblur.html