我一直在寻找一种更快的方法来使用位图上的混合效果“multiply”。我尝试过使用
我查阅了大量资料,似乎我能够实现我想要的效果(photoshop/gimp 的“multiply”图层混合)就是每个像素应用效果。
OpenGL 对于应用程序不是一个可选项。
我不确定我是否正确理解了维基百科提出的混合模式算法。
PorterDuff.Multiply
,但它不能在包含 Alpha 通道的位图上实现期望的结果,透明度为 0 的任何内容都会变成黑色。我查阅了大量资料,似乎我能够实现我想要的效果(photoshop/gimp 的“multiply”图层混合)就是每个像素应用效果。
OpenGL 对于应用程序不是一个可选项。
我不确定我是否正确理解了维基百科提出的混合模式算法。
TopColour * BottomColour / 255
应该是:ColorC.R = ColorA.R * ColorB.R / 255;
ColorC.G = ColorA.G * ColorB.G / 255;
ColorC.B = ColorA.B * ColorB.B / 255;
// Alpha = Alpha?
// This example is suggesting Android.Graphics.Color.A/R/G/B is writeable,
// it's not - this is just for readability.
// ColorA = Top, ColorB = Bottom, ColorC = Result
< p>把Color.ToArgb
转换成整数然后再处理,速度会更快吗?最后,我的乘法运算是正确的吗 - 它没有正常显示 :(
我卡住了,任何帮助都将受到极大的赞赏。
谢谢。
ColorC.A = ColorA.A * ColorB.A / 255;
我试一下!:)谢谢。 (还是我需要先将 Alpha 与其他颜色通道相乘?><这就是我困惑的地方lol)。 - Ecnelis