BlendMode(图像混合模式)

类似于Android原生的PorterDuffXferMode:


BlendMode(图像混合模式)_第1张图片

以下是Flutter提供的图像混合模式,说实话,好多混合模式结合官方给出的图片反而不理解,如果有大神对这些组合方式有更好的理解,还望评论区赐教!!!

  • clear:清除所有内容


    BlendMode(图像混合模式)_第2张图片
  • src:只显示源图像


    BlendMode(图像混合模式)_第3张图片
  • dst:只显示目标图像


    BlendMode(图像混合模式)_第4张图片
  • srcOver:默认值。将src与dst进行组合,如果src和dst有重叠的地方,则以src内容覆盖与dst重叠的地方。


    BlendMode(图像混合模式)_第5张图片
  • dstOver:与srcOver相反,This is useful when the source image should have been painted before the destination image, but could not be(摘自源码注释,翻译:当源图像应该在目标图像之前绘制,但不能绘制时,这是非常有用的。说实话,官方给出的下图不理解为什么src的鸟和dst下面的图片不显示?)


    BlendMode(图像混合模式)_第6张图片
  • srcIn:只显示src和dst重合部分,且dst的重合部分只有不透明度有用。(这个图也不理解)


    BlendMode(图像混合模式)_第7张图片
  • dstIn:只显示src和dst重合部分,且src的重合部分只有不透明度有用。


    BlendMode(图像混合模式)_第8张图片
  • srcOut:显示src图像,但只显示src和dst的不重合部分,且重合部分只有dst是不透明的才算重合


    BlendMode(图像混合模式)_第9张图片
  • dstOut:显示dst图像,但只显示src和dst的不重合部分,且重合部分只有src是不透明的才算重合


    BlendMode(图像混合模式)_第10张图片
  • srcATop:将src与dst进行组合,但只组合src和dst重合部分,不重合部分显示dst


    BlendMode(图像混合模式)_第11张图片
  • dstATop:将src与dst进行组合,但只组合src和dst重合部分,不重合部分显示src


    BlendMode(图像混合模式)_第12张图片
  • xor:显示src和dst不重合部分,重合部分不显示


    BlendMode(图像混合模式)_第13张图片
  • plus:混合src和dst,其中src的颜色透明度降低


    BlendMode(图像混合模式)_第14张图片
  • modulate: 将src和dst重叠部分混合,使混合部分颜色相乘,这只能导致相同或更深的颜色(乘以白色,1.0,结果没有变化;乘以黑色,得到黑色)。当合成两个不透明的图像时,其效果类似于将屏幕上的两个透明度重叠。如果src或dst考虑透明度,可以使用[multiply]


    BlendMode(图像混合模式)_第15张图片
  • screen: 将src图像和dst图像的分量的倒数相乘,并将结果的倒数相乘。反转组件意味着将完全饱和通道(不透明的白色)视为值0.0,而通常将值0.0(黑色、透明)视为值1.0。这与[modulate]混合模式本质上是相同的,但是在乘法运算之前颜色的值是倒过来的,在渲染之前结果是倒过来的。这只能导致相同或更浅的颜色(乘以黑色,1.0,结果没有变化;乘以白色,0.0,结果是白色)。同样,在alpha通道中,它只能产生更不透明的颜色。这与两个同时在同一屏幕上显示图像的投影仪有相似的效果。


    BlendMode(图像混合模式)_第16张图片
  • overlay:将src图像和dst图像的组件相乘,然后调整它们以适应dst。具体来说,如果dst值更小,则将其与src值相乘,而src值更小,则将src值的倒数与dst值的倒数相乘,然后将结果相乘。反转组件意味着将完全饱和的通道(不透明的白色)视为值0.0,而通常将值0.0(黑色、透明)视为值1.0。


    BlendMode(图像混合模式)_第17张图片
  • darken:通过从每个颜色通道中选择最小值来组合源图像和目标图像。输出图像的不透明度计算方法与[srcOver]相同。


    BlendMode(图像混合模式)_第18张图片
  • lighten: 通过从每个颜色通道中选择最大值来组合源图像和目标图像。输出图像的不透明度计算方法与[srcOver]相同。


    BlendMode(图像混合模式)_第19张图片
  • colorDodge:用src的倒数除以dst。反转组件意味着将完全饱和通道(不透明的白色)视为值0.0,而通常将值0.0(黑色、透明)视为值1.0。


    BlendMode(图像混合模式)_第20张图片
  • colorBurn:用dst函数的倒数除以src函数的倒数,然后求结果的倒数。反转组件意味着将完全饱和通道(不透明的白色)视为值0.0,而通常将值0.0(黑色、透明)视为值1.0。


    BlendMode(图像混合模式)_第21张图片
  • hardLight:将src图像和dst图像的组件相乘,然后对它们进行调整,使之有利于src。具体来说,如果src值更小,则将其与dst值相乘,而如果dst值更小,则将dst值的倒数与src值的倒数相乘,然后将结果相乘。反转组件意味着将完全饱和通道(不透明的白色)视为值0.0,而通常将值0.0(黑色、透明)视为值1.0。


    BlendMode(图像混合模式)_第22张图片
  • softLight: 对于小于0.5的src值使用[colorDodge],对于大于0.5的src值使用[colorBurn]。这导致了与[overlay]相似但更柔和的效果。


    BlendMode(图像混合模式)_第23张图片
  • difference: 从每个通道的大值中减去小值。合成黑色没有效果;合成白色使另一幅图像的颜色相反。输出图像的不透明度计算方法与[srcOver]相同。这种影响类似[exclusion],但更为严重。


    BlendMode(图像混合模式)_第24张图片
  • exclusion:从两个图像的和中减去两个图像的乘积的两倍。合成黑色没有效果;合成白色使另一幅图像的颜色相反。输出图像的不透明度计算方法与[srcOver]相同。效果类似[difference],但更柔和。


    BlendMode(图像混合模式)_第25张图片
  • multiply:将src图像和dst图像的组件相乘,包括alpha通道。这只能导致相同或更深的颜色(乘以白色,1.0,结果没有变化;乘以黑色,得到黑色)。由于alpha通道也是相乘的,在一个图像中一个完全透明的像素(不透明度0.0)会导致输出中一个完全透明的像素。这与[dstIn]很相似,但是颜色混合了。如果src和dst都没有透明度,则可以使用[modulate]


    BlendMode(图像混合模式)_第26张图片
  • hue:取src图像的色调,以及dst图像的饱和度和亮度。其效果是将dst图像与src图像着色。输出图像的不透明度计算方法与[srcOver]相同。在src图像中完全透明的区域从dst图像中获取它们的色调。


    BlendMode(图像混合模式)_第27张图片
  • saturation:取src图像的饱和度,以及dst图像的色调和亮度。输出图像的不透明度计算方法与[srcOver]相同。在src图像中完全透明的区域从dst图像中获取饱和度。


    BlendMode(图像混合模式)_第28张图片
  • color:取src图像的色调和饱和度,以及dst图像的亮度。其效果是将dst图像与src图像着色。输出图像的不透明度计算方法与[srcOver]相同。在src图像中完全透明的区域从dst图像中获取它们的色调和饱和度。


    BlendMode(图像混合模式)_第29张图片
  • luminosity:取src图像的亮度,以及dst图像的色调和饱和度。输出图像的不透明度计算方法与[srcOver]相同。在src图像中完全透明的区域从dst图像中获取亮度


    BlendMode(图像混合模式)_第30张图片

你可能感兴趣的:(BlendMode(图像混合模式))