我一直在尋找更快的方式來使用混合效果「乘」在我的位圖上。我曾嘗試使用PorterDuff.Multiply
,但它不能在包含Alpha通道的位圖上達到所需結果,任何帶有0 alpha的任何東西都會變成黑色。在C#中快速的每像素混合效果「乘」(Android版)
我已經閱讀並且似乎唯一可以實現效果的方法(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
難道是更快地Color.ToArgb
轉換,並與整數工作? 最後,我是正確計算乘法效應 - 它不能正常顯示:(
我堅持,任何幫助將大大讚賞
謝謝
這篇文章可能會揭示一些光http://kevindion.com/2011/01/android-bitmap-blending-color-channels/ – auselen
我覺得這個提示是使用ARGB_8888模式,這樣你就可以以混合阿爾法值。 – Cheesebaron
@auselen謝謝你!讀了這些讓我對雲霧繚繞的頭腦有所瞭解。由於那篇小文章,我對混合過程有了更多瞭解。很好找! – Ecnelis