GaussianBlur
ImportStatement: import QtGraphicalEffects 1.0
Since: QtGraphicalEffects 1.0
Inherits: Item
Properties
cached :bool
deviation :real
radius :real
samples :int
source :variant
transparentBorder: bool
DetailedDescription
GaussianBlur通过高斯函数计算模糊的算法来软化图像。模糊的质量比FastBlur高,但渲染的较慢。
源 | 影响 |
---|---|
| |
实现代码:
importQtQuick 2.0
importQtGraphicalEffects 1.0
Item {
width: 300
height: 300
Image {
id: bug
source: "images/bug.jpg"
sourceSize: Qt.size(parent.width,parent.height)
smooth: true
visible: false
}
GaussianBlur {
anchors.fill: bug
source: bug
radius: 8
samples: 16
}
}
PropertyDocumentation
cached :bool
是否缓冲输出,缓冲提高渲染效率,但消耗更多内存。每当源或影响属性发生变化,缓冲都会更新。当源和影响属性是动画时,推荐关闭缓冲,默认为假。
deviation :real
这是高斯函数的一个参数,用于计算相邻像素在模糊中的权重。巨大的deviation使图片更模糊,但同时降低模糊的质量。非常巨大的值让影响看上去有点类似于经过模糊算法的一个盒子。太小的值使半径周围的像素变得微不足道。
上图展现了高斯函数两个不同的deviation值,黄色为1,青色为2.7。y轴是权重,x轴是距离。
值在0.0(没有偏差)到inf(最大偏差)之间。默认情况下,devaition绑定半径。当半径增加,devaition自动线性增加。当半径值为8,devaition值大约为2.7034。这个值是模糊质量和模糊强度的妥协结果。
Deviation的影响 | ||
---|---|---|
| | |
deviation: 1 | deviation: 2 | deviation: 4 |
radius: 8 | radius: 8 | radius: 8 |
samples: 16 | samples: 16 | samples: 16 |
radius :real
可以影响单个像素模糊结果的像素所在范围。就是该像素周围的一个圈,圈内的像素都影响该像素的模糊结果。较大的半径能提高模糊效果。为了确保模糊质量,较大的半径需要更多的样品。值从0.0(没有模糊)到inf。默认属性值为0.0。
半径的影响 | ||
---|---|---|
| | |
radius: 0 | radius: 4 | radius: 8 |
samples: 16 | samples: 16 | samples: 16 |
deviation: 3 | deviation: 3 | deviation: 3 |
samples :int
计算模糊时,每像素取多少样品。更多的样品有更好的模糊质量,但渲染得更慢。
理想情况下,它应该是半径值最大值两倍。例如,如果半径是在0.0到0.4之间的动画,样品之应该设置成8。这个属性的值在0到32之间,默认为0。这个属性不能动画化,因为改变这个属性会导致OpenGL的着色器重新编译。
source :variant
需要模糊的源,它不能模糊自身,所以不能设置父到source上。
transparentBorder: bool
模糊在源实例边缘附近的行为,在源边缘是否受外部像素的影响。
如果属性为真,源外边的像素被解释为透明,这类似于OpenGL的clamp-to-border扩展行为,模糊扩展到源实例的外部。
如果属性为假,源外边的像素被解释为和边缘一个颜色,这类似于OpenGL的clamp-to-edge扩展行为,模糊不会扩展到源实例的外部。
默认为假。
transparentBorder的影响 | ||
---|---|---|
| | |
transparentBorder: false | transparentBorder: true | |
radius: 8 | radius: 8 | |
samples: 16 | samples: 16 | |
deviation: 2.7 | deviation: 2.7 |