Spec-Zone.ru › Qt 5.14

Тип 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API