QML 图形渲染 - Glow

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

属性介绍

  • cached : alias
    使用缓存效果输出像素,可以提高渲染性能。每次更改源或效果属性时,都必须更新缓存中的像素。会增加内存消耗,因为存储效果输出需要额外的内存缓冲区。所以我们建议在源属性或效果属性设置动画时禁用缓存。默认为 false

  • color : alias
    用于发光的 RGBA 颜色值。默认情况下,该属性为 “white”

  • radius : alias
    半径定义光晕的柔和度。半径越大,光晕的边缘越模糊。根据半径值,样本值应设置为足够大,以确保视觉质量。理想的模糊是通过选择采样和半径来实现的,即 采样 = 1 + 半径 * 2。默认情况下,该值为 floor(samples / 2)

  • samples : alias
    在完成模糊计算时每个像素采集的采样数。值越大,质量越好,但渲染速度越慢。默认情况下,该值为 9。注意:此属性不触发动画。更改此属性可能会导致重新编译基础 OpenGL 着色器

  • source : alias
    生成的光晕源的源项。注意:不支持让效果包含自身

  • spread : alias
    在源边附近光晕颜色的大部分增强程度。值的范围为 0.0 到 1.0。默认情况下,该属性设置为 0.5。注意:该实现针对中、低排列值进行了优化。根据来源的不同,接近 1.0 的排列值可能会产生视觉上不对称的结果

  • transparentBorder : alias
    确定效果是否具有透明边框。设置为 true 时,项目的外部将填充透明边,使源纹理外部的采样使用透明而不是边缘像素。如果没有此属性,具有不透明边缘的图像将不会获得模糊边缘。默认情况下,该属性设置为 true。如果源已具有透明边,则将其设置为 false,以使模糊速度加快一点

注意事项

  1. Glow 支持 OpenGL 渲染
  2. Glow 效果会模糊源的 alpha 通道,并使用颜色对其着色,然后将其放置在源的后面,从而在对象周围产生光晕
  3. Glow 是通过使用高斯模糊来实时模糊图像创建的。执行实时模糊是一项成本高昂的操作。在高端图形硬件上,即使采样数适中,全屏高斯模糊也只能以 60 fps 的速度运行

不同数值效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

官方示例

import QtQuick 2.12
import QtGraphicalEffects 1.12

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
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34139994/article/details/120053377
QML