RecursiveBlur QML Type

反复模糊,提供强烈的模糊效果。更多

Import Statement: import Qt5Compat.GraphicalEffects
Since: QtGraphicalEffects 1.0
Inherits:

Item

属性

详细说明

RecursiveBlur(递归模糊)特效通过使用递归反馈循环算法对图像源进行多次模糊处理,从而柔化图像。与GaussianBlurFastBlur 相比,该特效可能会产生更模糊的效果,但其结果是异步生成的,需要花费更多时间。

来源应用的效果

注: 此效果在使用 OpenGL 运行时可用。

示例

下面的示例展示了如何应用该效果。

import QtQuick
import Qt5Compat.GraphicalEffects

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

属性文档

cached : bool

此属性允许缓存效果输出像素,以提高渲染性能。

每次更改源或特效属性时,都必须更新缓存中的像素。由于需要额外的内存缓冲区来存储效果输出,因此会增加内存消耗。

建议在动画源或特效属性时禁用缓存。

默认情况下,该属性设置为false


loops : int

该属性定义了要对源执行的模糊迭代次数。当该属性发生变化时,迭代模糊过程就会开始。如果该值减小或该值从 0 变为非 0,则会从源图像中提取一个快照。该快照将作为进程的起点。

迭代循环会尽可能快地运行。速度可能会受到 VSYNC 或一个模糊步骤所需时间的限制,或两者兼而有之。有时可能需要以较慢的速度进行模糊处理。在这种情况下,可以通过增加数值的 Animation 来控制该属性。

数值范围从 0 到 inf。默认情况下,该属性设置为0

不同循环值的输出示例

循环:4 循环数:20 循环次数70
radius: 7.5radius: 7.5radius: 7.5

progress : real

该属性表示异步源模糊处理的进度,从 0.0(未模糊)到 1.0(已完成)。


radius : real

该属性定义了影响单个像素模糊效果的相邻像素的距离。半径越大,质量越好,但渲染速度越慢。

注意:此效果中的半径值不能频繁更改或动画。正确的使用方法是设置正确的值,并在迭代模糊序列的整个持续时间内保持不变。

该值范围从(无模糊)到 16.0(最大模糊步长)。默认情况下,该属性设置为0.0 (无模糊)。

不同半径值的输出示例

半径:2.5 半径4.5 半径:7.5
loops: 20loops: 20loops: 20

source : variant

该属性定义了要模糊的源项目。

注意: 不支持让效果包含自身,例如将源设置为效果的父项。


transparentBorder : bool

该属性定义了项目边缘附近的模糊行为,像素模糊会受到源边缘以外像素的影响。

如果将该属性设置为true ,源以外的像素将被解释为透明,这与 OpenGL 夹角到边界扩展类似。模糊会稍微扩展到效果项区域之外。

如果将该属性设置为false ,源以外的像素将被解释为包含与项目边缘像素相同的颜色,这与 OpenGL 夹角到边缘行为类似。模糊不会扩展到效果项区域之外。

默认情况下,该属性设置为false

具有不同 transparentBorder 值的输出示例

transparentBorder: false transparentBorder: true
loops: 20loops: 20
radius: 7.5radius: 7.5

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.