2D 特效

Qt 设计工作室提供一组特效,您可以通过将它们从“组件”>“Qt Quick Studio 特效”拖放到导航器中的组件来应用于组件。

"Effects tab in Components"

注意:特效的可用性取决于您在创建项目时是否选择了“Qt 5”或“Qt 6”。

特效具有一个或多个源属性,用于指定应用于组件的视觉输入。然后,在效果组件本身中展示已更改的视觉输出。源可以是场景中的另一个组件(通常是隐藏的)。更复杂的效果可以具有多个源。源组件可以是任何组件,甚至是视频或另一个效果。将多个效果链接起来可以简单快速地创建更引人注目的输出。

每个特效都有一组可以用来配置效果输出的属性。它们可以像任何其他属性一样进行动画处理。组件文档包含属性描述和基本用法示例。

除了本主题中描述的特效外,您还可以设置线性、辐射和对锥形渐变。有关更多信息,请参阅选择渐变

缓存和边框

在“缓存”或“缓存和边框”部分指定 2D 特效的常见属性。

"Studio Effects Caching and Border properties"

缓存属性允许将效果输出像素缓存起来以改善渲染性能。每次更改源或效果属性时,缓存中的像素都必须更新。由于需要额外存储效果输出的缓冲区,因此内存消耗会增加。我们建议您在源或效果属性动画时禁用缓存。

透明边框属性决定了组件边缘附近的模糊行为,其中像素模糊受源边缘之外像素的影响。

如果将该属性设置为true,则源边缘之外像素被视为透明,类似于OpenGL的裁剪到边缘扩展。模糊效果稍微超出效果组件区域。

如果将该属性设置为false,则源边缘之外像素被视为与组件边缘像素具有相同的颜色,类似于OpenGL的裁剪到边缘行为。模糊不会超出效果组件区域。

2D效果概述

以下表格总结了可用的效果,并包含了链接到继承组件的开发者文档。Qt 6列表示哪些效果可用于Qt 6项目。

注意:当使用OpenGL运行时,效果可用。

图标效果Qt 6描述
混合通过混合模式合并两个源组件。

默认的模式subtract,其中从前景源字段中指定的组件(该组件将被混合到源组件中)的像素值从源中减去,并将其覆盖。

有关可能的模式值及其使用示例,请参阅混合模式

亮度对比度调整亮度对比度
颜色覆盖通过应用覆盖颜色来改变源组件的颜色。您可以使用颜色选择器选择颜色
着色通过指定色调亮度饱和度值在HSL颜色空间中设置颜色。
去饱和度通过在去饱和度字段中设置值降低颜色的饱和度。值范围从0.0(无变化)到1.0(去饱和)。去饱和的像素值计算为源组件原始RGB组件值的平均值。
方向模糊在指定方向上应用模糊效果。字段角度的值定义了模糊的方向。该效果使源组件看起来像是在模糊的方向上移动。模糊应用于每个像素的两边,因此将方向设置为0180提供相同的结果。

长度字段中的值指定了每个像素的感知移动量。移动量均匀分配到每个像素的两边。

模糊的品质取决于样本字段的值。如果长度值很大,则需要更多样本来保留高视觉质量。

位移根据在位移源字段中指定的位移图移动源组件的像素。

位移字段的值指定了位移的缩放比例。缩放比例越大,像素的位移越大。将值设置为0.0不会产生位移。将值设置为-1.0根据位移源值设置倒置的最大位移,而将值设置为1.0设置最大位移。

投影阴影使用高斯模糊在源组件后面生成柔化阴影。此效果会模糊输入的Alpha通道并使结果着色,然后将它们放在源组件后面以创建柔化阴影。您可以在“投射阴影颜色”字段中设置阴影颜色,并在水平(H)和垂直(V)的“偏移量”字段中更改其位置。

半径”字段的值指定阴影的柔化程度。更大的半径会使阴影边缘看起来更模糊。通过将“样本数”字段的值设置为最高所需半径值的两倍再加一(samples = 1 + radius * 2)来获得理想的模糊效果。

通过使用高斯模糊实时模糊图像以创建柔化阴影,这是一个成本较高的操作。即使在高端图形硬件上,使用具有大量样本的全屏高斯模糊也只能达到60 FPS。

快速模糊将快速模糊效果应用于一个或多个源组件。与“高斯模糊”相比,“快速模糊”的模糊质量较低,但渲染速度快。此效果通过使用源内容下采样和双线性过滤算法来模糊源内容,从而软化源内容。如果源内容变化快速且不需要最高可能的模糊质量,请使用此效果。

半径”字段的值指定影响单个像素模糊的相邻像素的距离。更大的半径会增加模糊效果。快速模糊算法可能为了提供良好的渲染性能而在内部降低半径的精度。

伽玛调整更改源组件的亮度。此效果根据预先定义为幂律表达式的曲线应用于每个像素,其中“伽玛”字段的值用作倒数缩放指数。
高斯模糊将高斯模糊效果应用于一个或多个源组件。该效果通过使用高斯函数计算效果的算法来模糊图像,从而平滑图像。与“快速模糊”相比,效果质量更高,但渲染速度较慢。实时执行模糊操作成本较高。即使在高端图形硬件上,使用具有适度“样本数”的全屏高斯模糊也只能达到60 FPS。

半径”字段的值指定影响单个像素模糊的相邻像素的距离。“距离”字段的值是用于计算模糊相邻像素权重的伽玛函数参数。更大的偏差使图像看起来更模糊,但也会降低模糊质量。非常大的偏差值会使效果看起来有点类似于例如盒式模糊算法产生的效果。太小的偏差值会使半径附近的像素效果不明显。

发光在源组件周围生成光环状的发光效果。此效果会模糊源组件的Alpha通道,并用“发光颜色”对其进行着色。然后将Alpha通道放置在源组件后面,从而在组件周围形成光环或发光效果。可以使用“样本数”和“半径”值来控制模糊边缘的质量,使用“散射”字段值来更改发光的强度。
色调饱和度修改HSL颜色空间中的源组件颜色。此效果类似于着色效果,但色调饱和度值处理不同。此效果始终将此值以及亮度值从原始值移动,而不是设置它们。
内部阴影使用在内部阴影颜色字段中指定的颜色,在源内部生成着色且模糊的阴影。

可以通过样本半径字段的值来控制阴影的质量。理想情况下,样本值应该是所需最大半径值的两倍。例如,如果半径在0.04.0之间动画,则应将样本设置为8

扩散字段的值指定了阴影颜色在源边缘附近加强的部分大小。此效果产生高质量的阴影图像,因此阴影的渲染速度可能不是最快的。特别是如果阴影边缘被严重柔化,渲染速度会降低。对于需要在牺牲高视觉效果的情况下提高渲染速度的用例,请选择快速复选框。

级别调整调整RGBA颜色空间中的颜色级别。此效果分别在每个颜色通道中调整源组件颜色。可以调整源组件对比度并改变颜色平衡。

伽玛字段的值指定了根据方程式改变每个像素颜色通道值的改变因子。将伽玛值设置在QtVector3d(1.0, 1.0, 1.0)以下会使图像变暗,而高于QtVector3d(1.0, 1.0, 1.0)的值会使其变亮。值范围从QtVector3d(0.0, 0.0, 0.0)(最暗)到无穷大(最亮)。

您可以为每个颜色通道指定输入输出的最大和最小级别。最大输入设置白色点,这意味着所有高于该值的像素都将渲染为白色(每个颜色通道)。减小此值会使亮区变亮。为了使亮区变暗并增加对比度,减小最大输出字段的值。

最小输入字段的值设置每个颜色通道的最小输入级别。它设置黑色点,这意味着所有低于此值的像素都将渲染为黑色(每个颜色通道)。增加此值会使暗区变暗。为了使暗区变亮并减少对比度,增加最小输出字段的值。

遮罩模糊通过模糊图像来柔化图像。可以通过指定遮罩源来控制每个像素模糊的强度,从而使某些部分比其他部分更模糊。

半径字段的值指定了影响单个像素模糊的相邻像素的距离。

样本字段的值指定在执行模糊计算时每个像素抓取的样本数。较大的样本会产生更好的质量,但渲染速度较慢。

不透明度遮罩使用在遮罩源字段中指定的另一个组件遮罩源组件。遮罩组件将渲染到一个中间像素缓冲区中,并使用结果的alpha值来确定源组件像素在显示中的可见性。

选择反转复选框以指定结果不透明度为源alpha乘以遮罩alpha的倒数:As * (1 - Am)。当此属性为False时,结果不透明度为源alpha乘以遮罩alpha:As * Am

径向模糊在组件的中心点周围圆形方向应用方向模糊效果。此效果使源组件看起来像是在向模糊方向旋转。其他可用的模糊效果包括缩放模糊方向模糊

角度字段的值指定了模糊的方向和模糊程度。角度越大,结果越模糊。模糊质量取决于样本字段的值。如果角度较大,则需要更多的样本来保持高视觉质量。

递归模糊反复进行模糊处理,提供强大的模糊效果。通过使用递归反馈循环算法,将源进行多次模糊,模糊次数由循环字段设置决定。

半径字段的值指定了影响单个像素模糊的相邻像素的距离。

此效果可能比快速模糊高斯模糊产生的模糊结果更多,但结果是异步产生的,需要更多时间。

阈值蒙版使用指定的蒙版源对源组件进行蒙版。分散度Spread字段的值决定了阈值附近蒙版边缘的平滑度。将扩展值设置为0.0时使用指定阈值的蒙版。设置更高的扩展值会通过添加它们之间的插值值来软化从透明蒙版像素向不透明蒙版像素的过渡。
缩放模糊对源组件的中心点应用方向模糊效果。此效果使源组件看起来像是在Z方向向中心点移动或相机快速缩放。

长度字段的值指定了每个像素最大感知的移动量。靠近由水平H和垂直V偏移字段的中心指定的值较小,在边缘达到指定值。

模糊质量取决于样本字段的值。如果长度值较大,则需要更多的样本来保持高视觉效果。

其他可用的运动模糊效果包括方向模糊径向模糊

在特定Qt许可下提供。
查找更多信息。