Тип QML GaussianBlur
Применяет размытие с большей точностью. Подробнее...
| Заявление об импорте: | import QtGraphicalEffects 1.15 |
| С тех пор: | 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
Это свойство позволяет кэшировать пиксели результата эффекта для повышения производительности отрисовки. Каждый раз, когда изменяются свойства source или effect, пиксели в кэше должны быть обновлены. Потребление памяти увеличивается, поскольку требуется дополнительный буфер памяти для хранения выходных данных эффекта.
Рекомендуется отключить кэширование, когда свойства source или effect анимируются.
По умолчанию свойство установлено в false.
deviation : real
Это свойство является параметром для функции Гаусса, используемой при расчёте весов соседних пикселей для размытия. Большее значение deviation приводит к более сильному размытию изображения, но также снижает качество размытия. Очень большое значение deviation делает эффект похожим на эффект, например, алгоритма размытия по прямоугольнику. Слишком маленькое значение deviation делает эффект незначительным для пикселей вблизи радиуса.
На изображении выше показана функция Гаусса с двумя разными значениями deviation, жёлтый (1) и голубой (2.7). Ось y отображает веса, ось x отображает расстояние между пикселями.
Значение изменяется от 0.0 (без размытия) до бесконечности (максимальное размытие). По умолчанию devaition привязан к radius. При увеличении radius значение deviation автоматически линейно увеличивается. При значении radius равном 8, значение deviation по умолчанию приблизительно равно 2.7034. Это значение представляет собой компромисс между качеством размытия и общим уровнем размытия.
| Примеры выходных данных с разными значениями deviation | ||
|---|---|---|
| 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, например:
| Radius | Samples |
|---|---|
| 0 (нет размытия) | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
Значение изменяется от 0.0 (без размытия) до бесконечности. По умолчанию свойство установлено в floor(samples / 2.0).
| Примеры выходных данных с разными значениями radius | ||
|---|---|---|
| radius: 0 | radius: 4 | radius: 8 |
| samples: 16 | samples: 16 | samples: 16 |
| deviation: 3 | deviation: 3 | deviation: 3 |
samples : int
Это свойство определяет количество образцов, взятых на каждый пиксель при расчёте размытия. Большее значение обеспечивает лучшее качество, но медленнее его отрисовка.
В идеале это значение должно быть в два раза больше, чем наибольшее необходимое значение radius плюс 1, например, если radius анимируется между 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.15/qml-qtgraphicaleffects-gaussianblur.html