FlutterBlendMode混合模式详解
1.介绍:
在画布上绘画时使⽤的算法。
在画布上绘制形状或图像时,可以使⽤不同的算法来混合像素。的不同值指定不同的此类算法。
每个算法都有两个输⼊,即源(即正在绘制的图像)和⽬标(即要合成源图像的图像)。⽬的地通常被认为是背景。源和⽬标都有四个颜⾊通道,红⾊,绿⾊,蓝⾊和alpha通道。这些通常表⽰为0.0到1.0范围内的数字。算法的输出也具有这四个相同的通道,其值根据源和⽬标计算。
下⾯每个值的⽂档描述了算法的⼯作原理。在每种情况下,图像显⽰将源图像与⽬标图像混合的输出。在下⾯的图像中,⽬的地由具有⽔平线和不透明风景照⽚的图像表⽰,并且源由具有垂直线(相同线但旋转)的图像和鸟剪贴画图像表⽰。该模式仅⽰出了源图像和模式仅显⽰⽬标图像。在下⾯的⽂档中,透明度由棋盘图案说明。的模式丢弃源和⽬标,从⽽导致输出是完全透明的(由实棋盘图案⽰出)。
这些图像中的⽔平和垂直条显⽰具有不同不透明度⽔平的红⾊,绿⾊和蓝⾊通道,然后所有三个颜⾊通道以及相同的不同不透明度⽔平,然后所有三个颜⾊通道设置为零,具有不同的不透明度⽔平,然后两个条形显⽰红⾊/绿⾊/蓝⾊重复渐变,第⼀个具有完全不透明度,第⼆个具有部分不透明度,最后⼀个条
形图将三个颜⾊通道设置为零,但不透明度在重复渐变中变化。
2.应⽤于 API
使⽤和,调⽤时将应⽤ 赋予的的混合模式 。每次调⽤引⼊⼀个新的图层,在图层上绘制形状和图像; 当时,该图层将合成到⽗图层上,其中源是最近绘制的形状和图像,⽬标是⽗图层。(对于第⼀个调⽤,⽗层是画布本⾝。)
也可以看看:
,它使⽤来定义合成策略。
3.常量
src
删除⽬标图像,仅绘制源图像。从概念上讲,⾸先清除⽬的地,然后绘制源图像。
这对应于“复制”Porter-Duff运算符。
dst
删除源图像,仅绘制⽬标图像。从概念上讲,源图像被丢弃,保持⽬的地不变。
这对应于“⽬的地”Porter-Duff运算符。
srcOver
将源图像合成到⽬标图像上。
这是默认值。它代表了最直观的情况,其中形状被绘制在下⾯的内部,透明区域显⽰⽬标层。
这对应于“Source over Destination”Porter-Duff运算符,也称为Painter算法。
dstATop
将⽬标图像合成到源图像上,但仅限于它与源重叠的位置。
这对应于“Destination atop Source”Porter-Duff运算符。
这本质上是运算符,但输出的不透明度通道设置为源图像的不透明度通道,⽽不是图像的不透明度通道的组合。
对于源位于顶部⽽⾮⽬标的变体,请参阅 。
dstIn
显⽰⽬标图像,但仅显⽰两个图像重叠的位置。源图像未呈现,仅被视为蒙版。忽略源的颜⾊通道,只有不透明度才有效。
要显⽰源图像,请考虑。
要反转掩码的语义(仅显⽰⽬标所在的源,⽽不是缺少的位置),请考虑。
这对应于“源中的⽬的地”Porter-Duff运算符。
dstOut
显⽰⽬标图像,但仅限于两个图像不重叠的位置。源图像未呈现,仅被视为蒙版。忽略源的颜⾊通道,只有不透明度才有效。要显⽰源图像,请考虑。
要反转掩码的语义(仅显⽰源所在的⽬标,⽽不是缺少的位置),请考虑。
这对应于“⽬的地输出源”Porter-Duff运算符。
clear
删除源图像和⽬标图像,不留任何内容。这对应于“清除”Porter-Duff运算符。
color
获取源图像的⾊调和饱和度以及⽬标图像的亮度。
效果是使⽤源图像为⽬标图像着⾊。
输出图像的不透明度的计算⽅法与相同 。在源图像中完全透明的区域从⽬的地获取其⾊调和饱和度。
也可以看看:
,这是⼀种类似但较弱的效果。
modulate,这是⼀种类似的着⾊效果,但也有⽩⾊。
,仅应⽤源图像的饱和度。
colorBurn
将⽬标的倒数除以源,并反转结果。
反转组件意味着完全饱和的通道(不透明的⽩⾊)被视为值0.0,通常被视为0.0(⿊⾊,透明)的值被视为1.0。
colorDodge
将⽬的地除以源的倒数。
反转组件意味着完全饱和的通道(不透明的⽩⾊)被视为值0.0,通常被视为0.0(⿊⾊,透明)的值被视为1.0。
darken
通过从每个颜⾊通道中选择最低值来合成源图像和⽬标图像。
输出图像的不透明度的计算⽅法与相同 。
difference
从每个通道的较⼤值中减去较⼩的值。合成⿊⾊没有效果; 合成⽩⾊会反转另⼀幅图像的颜⾊。输出图像的不透明度的计算⽅法与相同 。
效果类似于但更严厉。
dstOver
合并⽬标图像下的源图像。
这与相反。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论