我目前正在开发Android应用程序。我主要使用drawBitmap方法将所有绘图绘制到Canvas对象上。我想要实现的当前效果是在两个位图之间“交叉淡入淡出”。两个位图是相似的图像,只有外部部分不同。通过交叉渐变,相同的内部部分应保持相同,而外部区域似乎从一种状态褪色到另一种状态。我查看了每个可用的PorterDuff.Modes,但没有一个符合我想要的确切效果。基本上我认为我想要实现的等式是:
w =体重(从0到1) a_i,c_i =图像i = 1和2的alpha和颜色值
(a1,c1)+(w)(a2,c2)=((1-w)* a1 + w * a2,((1-w)* a1 * c1 + w * a2 * c2)/( (1-w)* a1 + w * a2))
(当然,也考虑了零分割案例 - 这基本上是两幅图像的加权“平均”)
有没有办法编写“自定义”PorterDuff模式来实现这个?我不想要提取每个Bitmap的颜色数组,并在每个帧上手动循环它们以进行此转换,如果有更有效的方法来实现它。
如果有人知道如何有效地解决这个问题,或者知道我不知道并且无法在网上找到的其他方法,那将非常感激。此外,如果我的转变似乎不适合这项任务,那么你的批评也会受到欢迎。
P.S。我试图仅插入alpha值并按原样绘制两个图像,但是例如在插值的中间,两者在通常为1的区域中都具有0.5的alpha值,并且绘制两个0.5 alpha图像会导致透明度,这不是我想要的。正常的ADD操作应该最终使颜色饱和,这也是不希望的。