Тип QML GaussianBlur
Применяет размытие с более высоким качеством.Подробнее...
| Оператор импорта: | import QtGraphicalEffects 1.14 |
| С: | 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). Ось ординат отображает веса, ось абсцисс отображает расстояние между пикселями.
Значение изменяется от 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.14/qml-qtgraphicaleffects-gaussianblur.html