QML 图形渲染 - RecursiveBlur

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

属性介绍

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

  • loops : int
    对源执行的模糊迭代量。当属性更改时,迭代模糊过程开始。如果该值减小或该值从零变为非零,则从源中获取快照。快照用作流程的起点。迭代循环尝试以尽可能快的速度运行。速度可能会受到 VSYNC 或一个模糊步骤所需时间的限制,或同时受到两者的限制。有时可能需要以较慢的速度执行模糊。在这种情况下,可以方便地通过增加值的动画控制特性。该值的范围从 0 到 inf。默认情况下,该属性设置为 0

  • progress : real
    异步源模糊过程的进度,从 0.0(无模糊)到 1.0(已完成)

  • radius : real
    影响单个像素模糊的相邻像素的距离。半径越大,质量越好,但渲染速度越慢。注意:此效果中的半径值不会经常更改或触发动画。正确的使用方法是设置正确的值,并在迭代模糊序列的整个持续时间内保持不变。该值的范围从 0.0(无模糊)到 16.0(最大模糊步长)。默认情况下,该特性设置为 0.0(无模糊)

  • source : variant
    要模糊的源项。注意:不支持让效果包含自身

  • transparentBorder : bool
    项目边缘附近的模糊行为,其中像素模糊受源边缘外像素的影响。如果该属性设置为 true,则源外部的像素将被解释为透明的,这类似于 OpenGL 钳制到边框扩展。模糊在效果项区域外稍微展开。如果该属性设置为 false,则源之外的像素将被解释为包含与项目边缘像素相同的颜色,这类似于 OpenGL 钳制到边缘的行为。模糊不会在效果项区域之外展开。默认情况下,该属性设置为 false

注意事项

  1. RecursiveBlur 支持 OpenGL 渲染
  2. RecursiveBlur 递归模糊效果通过使用递归反馈循环多次模糊源的算法模糊图像来软化图像。与 GaussianBlur 或 FastBlur 相比,该效果可能会产生更模糊的结果,但结果是异步生成的,并且需要更多的时间

不同数值效果展示

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

官方示例

import QtQuick 2.12
import QtGraphicalEffects 1.12

Item {
    width: 300
    height: 300
    
    Image {
        id: bug
        source: "images/bug.jpg"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }
    
    RecursiveBlur {
        anchors.fill: bug
        source: bug
        radius: 7.5
        loops: 50
    }
}

在这里插入图片描述

猜你喜欢

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