QML 图形渲染 - DropShadow

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

属性介绍

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

  • color : alias
    用于阴影的 RGBA 颜色值。默认情况下,该属性设置为 “black”,即黑色

  • horizontalOffset : real
    渲染阴影相对于 DropShadow 项目位置的水平偏移。通常,DropShadow 项被锚定,以便填充源元素。在这种情况下,如果 HorizontalOffset 和 verticalOffset 属性设置为 0,则阴影将完全在源项下渲染。通过更改偏移特性,可以相对于源项定位阴影。值的范围从 -inf 到 inf。默认情况下,属性设置为 0

  • radius : int
    半径定义阴影的柔和度。半径越大,阴影的边缘越模糊。理想的模糊是通过选择采样和半径来实现的,即采样 = 1 + 半径 * 2

  • samples : alias
    在执行边缘软化模糊计算时,每个像素采集的采样数。值越大,质量越好,但渲染速度越慢。理想情况下,该值应为所需最大半径值的两倍加 1

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

  • spread : alias
    在源边附近阴影颜色的大部分增强程度。该值的范围为 0.0 到 1.0。默认情况下,该值为 0.0

  • transparentBorder : alias
    确定效果是否具有透明边框。设置为 true 时,项目的外部将填充 1 像素宽的透明边,使源纹理外部的采样使用透明度而不是边缘像素。如果没有此属性,具有不透明边缘的图像将不会得到模糊阴影。默认情况下,此属性设置为 true

  • **verticalOffset : real **
    渲染阴影相对于 DropShadow 项目位置的垂直偏移。通常,DropShadow 项被锚定,以便填充源元素。在这种情况下,如果 HorizontalOffset 和 verticalOffset 属性设置为0,则阴影将完全在源项下渲染。通过更改偏移特性,可以相对于源项定位阴影。值的范围从 -inf 到 inf。默认情况下,属性设置为 0

注意事项

  1. DropShadow 支持 OpenGL 渲染
  2. DropShadow 效果会模糊输入的 alpha 通道,将结果着色并将其放置在源对象后面,以创建软阴影
  3. 软阴影是通过使用高斯模糊,实时模糊图像来创建的。执行实时模糊是一项成本高昂的操作。在高端图形硬件上,即使采样数适中,全屏高斯模糊也只能以 60 fps 的速度运行。当源是静态的时,可以将缓存属性设置为分配到另一个缓冲区,以避免每次绘制时执行模糊

不同数值效果展示

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

官方示例

import QtQuick 2.12
import QtGraphicalEffects 1.12

Item {
    width: 300
    height: 300
    
    Rectangle {
        anchors.fill: parent
    }
    
    Image {
        id: butterfly
        source: "images/butterfly.png"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }
    
    DropShadow {
        anchors.fill: butterfly
        horizontalOffset: 3
        verticalOffset: 3
        radius: 8.0
        samples: 17
        color: "#80000000"
        source: butterfly
    }
}

在这里插入图片描述

猜你喜欢

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