Я искал более быстрый способ использования эффекта смешивания «умножить» на моих растровых изображениях. Я пытался использовать PorterDuff.Multiply
, но это не дает желаемого результата на растровых изображениях, содержащих альфа-каналы, все, что имеет значение альфа-канала 0, становится черным.
Я читал вокруг, и кажется, что единственный способ добиться эффекта, который мне нужен (смешивание слоев «умножение» в photoshop / gimp), - это применить эффект на пиксель.
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
и работать с целым числом? И, наконец, правильно ли я рассчитываю эффект умножения - он не отображается должным образом :(
Я застрял, любая помощь будет большой признательна.
Спасибо.
ColorC.A = ColorA.A * ColorB.A / 255;
Попробую! :) Спасибо. (или мне нужно будет сначала умножить альфу на каждый другой цветовой канал? ‹ Вот где я запутался, лол). - person Ecnelis   schedule 29.09.2012