Spec-Zone.ru › Qt 5.12

Тип QML GaussianBlur

Применяет размытие более высокого качества. Подробнее...

Оператор импорта: import QtGraphicalEffects 1.12
С: 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). Ось y показывает веса, ось x показывает расстояние между пикселями.

Значение изменяется от 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.12/qml-qtgraphicaleffects-gaussianblur.html

Spec-Zone.ru

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