Spec-Zone.ru › Qt 5.9

Тип QML GaussianBlur

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

Заявление импорта: import QtGraphicalEffects 1.0
С момента: QtGraphicalEffects 1.0
Наследует:

Элемент

  • Список всех членов, включая унаследованные

Свойства

  • cached : bool
  • deviation : вещественное
  • radius : вещественное
  • samples : целое число
  • source : вариант
  • 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 : вещественное

Это свойство является параметром гауссовой функции, используемой при расчете весов соседних пикселей для размытия. Большее значение отклонения приводит к более размытому изображению, но также снижает качество размытия. Очень большое значение отклонения делает эффект похожим на то, что производит, например, алгоритм размытия по ящику. Слишком маленькое значение отклонения делает эффект незначительным для пикселей, близких к радиусу.

На рисунке выше показана гауссова функция с двумя различными значениями отклонения: жёлтым (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, образцы должны быть установлены в 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.9/qml-qtgraphicaleffects-gaussianblur.html

Spec-Zone.ru

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