qml FastBlur详解

1、概述

FastBlur 是 QML 中 QtGraphicalEffects 模块提供的一个组件,用于在 Qt Quick 应用程序中实现快速模糊效果。它可以应用于任何图像、矩形或其他可视项,使其看起来模糊和不清晰。FastBlur 使用了源内容缩小和双线性过滤的算法来模糊源内容,从而软化源内容。虽然其模糊质量低于高斯模糊(GaussianBlur),但渲染速度更快,适用于源内容快速变化且不需要最高模糊质量的场景。

2、重要属性
  • cached:bool 类型,用于缓存效果输出像素,以提高渲染性能。但每次更改源或效果属性时,都必须更新缓存中的像素,会增加内存消耗。因此,在源属性或效果属性设置动画时建议禁用缓存。
  • radius:real 类型,定义影响单个像素模糊的相邻像素的距离。较大的半径会增加模糊效果。但请注意,FastBlur 算法可能会在内部降低半径的精度,以提供良好的渲染性能。该值的范围为 0.0(无模糊)到正无穷大。当半径超过 64 时,模糊的视觉质量可能会降低。
  • source:variant 类型,指定要模糊的源项。
  • transparentBorder:bool 类型,定义项目边缘附近的模糊行为。如果设置为 true,则源外部的像素将被解释为透明的,模糊效果会在效果项区域外稍微展开。如果设置为 false,则源之外的像素将被解释为包含与项目边缘像素相同的颜色,模糊效果不会扩展到效果项区域之外。默认为 false。
Window {
    width: 480; height: 240
    visible: true


    Rectangle {
        width: 480
        height: 240
        color: '#1e1e1e'

        Row {
            anchors.centerIn: parent
            spacing: 16

            Image {
                id: sourceImage
                source: "res/0.jpg"
                width: 200
                height: width
                sourceSize: Qt.size(parent.width, parent.height)
                smooth: true
            }

            FastBlur {
                width: 200
                height: width
                source: sourceImage
                radius: blurred ? 32 : 0

                property bool blurred: false

                Behavior on radius {
                    NumberAnimation {
                        duration: 1000
                    }
                }

                MouseArea {
                    id: area
                    anchors.fill: parent
                    onClicked: {
                        parent.blurred = !parent.blurred
                    }
                }
            }


        }
    }


}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

### QML Repeater 元素详解 #### 创建多个相似项 在QML中,`Repeater`元素用于创建多个相同或相似的项[^1]。此功能使得开发者能够轻松地生成一系列具有共同特性的UI组件。 #### 关键属性说明 - **model**: 定义了要重复的数据源。这可以是一个简单的整数表示次数,也可以是更复杂的数据结构如列表或JSON对象。 - **delegate**: 描述每一个实例的具体外观和行为。对于每次迭代,都会基于该模板创建一个新的实例[^2]。 #### 布局管理 为了更好地管理和排列由`Repeater`产生的项目,通常会将其嵌入到某种类型的容器内,比如`Row`, `Column`等定位器类型中,从而实现更加直观的位置安排[^3]。 #### 数据绑定特性 值得注意的是,在使用`Repeater`时遵循了QML的设计理念——即保持数据与界面逻辑分离的原则。这意味着可以通过改变底层的数据模型来动态更新界面上显示的内容,而不需要修改具体的视图定义[^4]。 ```qml import QtQuick 2.0 // 示例展示了如何利用Repeater在一个水平行里放置三个黄色矩形框 Row { spacing: 5 // 设置间距 Repeater { model: 3 delegate: Rectangle { width: 100; height: 40; border.width: 1; color: "yellow" Text { text: index.toString(); anchors.centerIn: parent } } } } ``` 这段代码片段不仅实现了基本的功能展示,还加入了内部文本标签以区分各个实例,并通过调整`spacing`参数改善视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值