Spec-Zone.ru › Qt 5.11

Тип QML Glow

Создаёт ореол-подобное свечение вокруг исходного элемента. Подробнее...

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

Элемент

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

Свойства

  • cached : псевдоним
  • цвет : псевдоним
  • радиус : псевдоним
  • samples : псевдоним
  • источник : псевдоним
  • распространение : псевдоним
  • прозрачнаяГраница : псевдоним

Подробное описание

Эффект Glow размывает альфа-канал источника и окрашивает его цветом цвет, размещая его за источником, создавая ореол или свечение вокруг объекта. Качество размытых краёв можно контролировать с помощью samples и радиуса, а интенсивность свечения — с помощью распространения.

Источник Применённый эффект

Свечение создаётся путём живого размытия изображения с помощью гауссова размытия. Выполнение живого размытия — ресурсоёмкая операция. Полностьюэкранное гауссово размытие даже с умеренным количеством samples будет работать только с 60 кадрами в секунду на высокопроизводительной графической аппаратуре.

Примечание: Этот эффект доступен при запуске с OpenGL.

Пример

Следующий пример демонстрирует, как применить эффект.

import QtQuick 2.0
import QtGraphicalEffects 1.0

Item {
    width: 300
    height: 300

    Rectangle {
        anchors.fill: parent
        color: "black"
    }

    Image {
        id: butterfly
        source: "images/butterfly.png"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }

    Glow {
        anchors.fill: butterfly
        radius: 8
        samples: 17
        color: "white"
        source: butterfly
    }
}

Документация по свойствам

cached : псевдоним

Это свойство позволяет кэшировать пиксели вывода эффекта для повышения производительности рендеринга.

Каждый раз при изменении свойства источника или эффекта пиксели в кэше должны быть обновлены. Потребление памяти увеличивается, так как для хранения выходных данных эффекта требуется дополнительный буфер памяти.

Рекомендуется отключить кэширование, когда источник или свойства эффекта анимированы.

По умолчанию свойство установлено в false.

цвет : псевдоним

Это свойство определяет значение RGBA цвета, используемое для свечения.

По умолчанию свойство установлено в "white".

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

цвет: #ffffff цвет: #00ff00 цвет: #aa00ff00
радиус: 8 радиус: 8 радиус: 8
samples: 17 samples: 17 samples: 17
распространение: 0,5 распространение: 0,5 распространение: 0,5

радиус : псевдоним

Радиус определяет мягкость свечения. Более большой радиус приводит к более размытым краям свечения.

В зависимости от значения радиуса, значение samples должно быть достаточно большим, чтобы обеспечить качество изображения.

Идеальное размытие достигается путём выбора samples и radius таким образом, чтобы samples = 1 + radius * 2, например:

Радиус Samples
0 (без размытия) 1
1 3
2 5
3 7

По умолчанию свойство установлено в floor(samples/2).

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

радиус: 0 радиус: 6 радиус: 12
samples: 25 samples: 25 samples: 25
цвет: #ffffff цвет: #ffffff цвет: #ffffff
распространение: 0 распространение: 0 распространение: 0

samples : псевдоним

Это свойство определяет количество samples, взятых на пиксель при вычислении размытия по краям. Более высокое значение обеспечивает лучшее качество, но замедляет рендеринг.

В идеале это значение должно быть в два раза больше максимального значения радиуса плюс один, например:

Радиус Samples
0 (без размытия) 1
1 3
2 5
3 7

По умолчанию свойство установлено в 9.

Это свойство не предназначено для анимации. Изменение этого свойства приведёт к перекомпиляции базовых шейдеров OpenGL.

источник : псевдоним

Это свойство определяет элемент-источник, который будет использован в качестве источника для сгенерированного свечения.

Примечание: Нельзя позволять эффекту включать себя, например, устанавливая источник как родитель эффекта.

распространение : псевдоним

Это свойство определяет, насколько большая часть цвета свечения усиливается вблизи краёв источника.

Значения варьируются от 0,0 до 1,0. По умолчанию свойство установлено в 0.5.

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

распространение: 0,0 распространение: 0,5 распространение: 1,0
радиус: 8 радиус: 8 радиус: 8
samples: 17 samples: 17 samples: 17
цвет: #ffffff цвет: #ffffff цвет: #ffffff

прозрачнаяГраница : псевдоним

Это свойство определяет, имеет ли эффект прозрачную границу.

При установке в true, внешний вид элемента заполняется прозрачным краем, делая использование samples за пределами текстуры источника прозрачным вместо пикселей края. Без этого свойства изображение с непрозрачными краями не получит размытого края.

По умолчанию свойство установлено в true. Установите его в false, если у источника уже есть прозрачный край, чтобы немного ускорить размытие.

В примере слева прямоугольник имеет прозрачные границы и размытые края, в то время как справа нет.

import QtQuick 2.0
import QtGraphicalEffects 1.0

Rectangle {
    width: 180
    height: 100

    Row {
        anchors.centerIn: parent
        spacing: 16

        Rectangle {
            id: normalRect
            width: 60
            height: 60
            color: "black"
            radius: 10
            layer.enabled: true
            layer.effect: Glow {
                samples: 15
                color: "blue"
                transparentBorder: false
            }
        }

        Rectangle {
            id: transparentBorderRect
            width: 60
            height: 60
            color: "black"
            radius: 10
            layer.enabled: true
            layer.effect: Glow {
                samples: 15
                color: "blue"
                transparentBorder: true
            }
        }
    }
}

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

Spec-Zone.ru

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