Spec-Zone.ru › Qt 5.11

Тип QML GaussianBlur

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

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

Элемент

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

Свойства

  • cached : bool
  • deviation : real
  • radius : real
  • samples : int
  • source : variant
  • 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 : real

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

На изображении выше показана функция Гаусса с двумя различными значениями отклонения, жёлтым (1) и сине-голубым (2,7). Ось y показывает веса, ось x показывает расстояние между пикселями.

Значение изменяется от 0,0 (нет отклонения) до бесконечности (максимальное отклонение). По умолчанию отклонение привязано к радиусу. При увеличении радиуса отклонение автоматически увеличивается линейно. При значении радиуса 8 значение отклонения по умолчанию составляет приблизительно 2,7034. Это значение представляет собой компромисс между качеством размытия и общим размытием.

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

отклонение: 1 отклонение: 2 отклонение: 4
радиус: 8 радиус: 8 радиус: 8
образцы: 16 образцы: 16 образцы: 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
образцы: 16 образцы: 16 образцы: 16
отклонение: 3 отклонение: 3 отклонение: 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
радиус: 8 радиус: 8
образцы: 16 образцы: 16
отклонение: 2,7 отклонение: 2,7

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtgraphicaleffects-gaussianblur.html

Spec-Zone.ru

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