Тип QML GaussianBlur
Применяет размытие с эффектом большего качества. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.0 |
| С тех пор: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
- cached : bool
- deviation : real
- radius : real
- samples : int
- source : variant
- transparentBorder : bool
Подробное описание
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
}
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 |
| радиус: 8 | радиус: 8 | радиус: 8 |
| образцы: 16 | образцы: 16 | образцы: 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 |
| образцы: 16 | образцы: 16 | образцы: 16 |
| отклонение: 3 | отклонение: 3 | отклонение: 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 | |
| радиус: 8 | радиус: 8 | |
| образцы: 16 | образцы: 16 | |
| отклонение: 2,7 | отклонение: 2,7 |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtgraphicaleffects-gaussianblur.html