本页内容

RecursiveBlur QML Type

反复进行模糊处理,产生强烈的模糊效果。更多...

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

Item

属性

详细说明

“RecursiveBlur”效果通过一种利用递归反馈循环对源图像进行多次模糊处理的算法,使图像变得柔和。该效果产生的模糊程度可能比GaussianBlur 或FastBlur 更强,但处理过程是异步进行的,因此需要更多时间。

源图像已应用效果

叶子上的黑甲虫

带有递归模糊效果的甲虫

注意:此 效果仅在 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

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

迭代循环会尽可能快速地运行。其速度可能会受到 VSYNC 或单次模糊步骤所需时间的限制,也可能同时受到这两者的限制。有时可能希望以更慢的速度进行模糊处理。在这种情况下,使用动画(Animation)来控制该属性并增加其值会比较方便。

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

不同循环值下的输出示例

带有4个模糊循环的甲虫

带有20个模糊循环的甲虫

带有70个模糊循环的甲虫

loops: 4 loops: 20 loops: 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的甲虫

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

注意: radius 属性 用于计算特效的离屏缓冲区大小。数值越大,占用的内存就越多。

source : variant

此属性用于指定将被模糊处理的源项目。

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

transparentBorder : bool

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

如果将该属性设置为true ,则源区域外的像素将被解释为透明,这类似于 OpenGL 的“clamp-to-border”扩展。模糊效果会稍微扩展到效果项区域之外。

如果将该属性设置为“false ”,则源区域外的像素将被解释为与项目边缘像素具有相同的颜色,这类似于 OpenGL 的“clamp-to-edge”行为。模糊效果不会扩展到效果项目区域之外。

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

不同 transparentBorder 值的输出示例

禁用带透明边框的模糊效果

启用带透明边框的模糊效果

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

© 2026 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.