Тип QML GaussianBlur
Применяет размытие с эффектом более высокого качества. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.0 |
| С момента: | QtGraphicalEffects 1.0 |
| Наследует: |
Свойства
- cached : bool
- deviation : вещественное число
- radius : вещественное число
- samples : целое число
- source : переменная
- transparentBorder : bool
Подробное описание
GaussianBlur эффект смягчает изображение, размывая его с помощью алгоритма, использующего гауссову функцию для расчета эффекта. Эффект производит более высокое качество, чем FastBlur, но его рендеринг медленнее.
| Источник | Применяемый эффект |
|---|---|
Пример
Следующий пример демонстрирует, как применить эффект.
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 : вещественное число
Это свойство является параметром гауссовой функции, используемой при расчете весов соседних пикселей для размытия. Большее значение отклонения приводит к тому, что изображение выглядит более размытым, но также снижает качество размытия. Очень большое значение отклонения делает эффект похожим на то, что, например, производит алгоритм размытия по прямоугольнику. Слишком малое значение отклонения делает эффект незначительным для пикселей рядом с радиусом.
На изображении выше показана гауссова функция с двумя разными значениями отклонения: жёлтый (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 : вещественное число
Это свойство определяет расстояние соседних пикселей, которые влияют на размытие отдельного пикселя. Более большой радиус увеличивает эффект размытия.
Идеальное размытие достигается путём выбора 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 : целое число
Это свойство определяет количество выборок, взятых на пиксель при вычислении размытия. Большее значение обеспечивает более высокое качество, но медленнее рендерится.
В идеале это значение должно быть в два раза больше наибольшего требуемого значения радиуса плюс 1, например, если радиус анимирован между 0.0 и 4.0, samples следует установить в 9.
По умолчанию свойство установлено в 9.
Примечание: Это свойство не предназначено для анимации. Изменение этого свойства может привести к перекомпиляции базовых шейдеров OpenGL.
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/archives/qt-5.6/qml-qtgraphicaleffects-gaussianblur.html