Это называется альфа-смешение .
В psuedocode, предполагая, что цвет фона (blend) всегда имеет 255 альфа. Также предполагается, что альфа 0-255.
alpha=argb.alpha()
r = (alpha/255)*argb.r() + (1 - alpha/255)*blend.r()
g = (alpha/255)*argb.g() + (1 - alpha/255)*blend.g()
b = (alpha/255)*argb.b() + (1 - alpha/255)*blend.b()
примечание: вам, вероятно, нужно быть немного (более) осторожным в вопросах математики с плавающей запятой / int и вопросах округления, в зависимости от языка. Отливать промежуточные звенья соответственно
Отредактировано, чтобы добавить:
Если у вас нет цвета фона с альфа-значением 255, алгебра становится намного сложнее. Я делал это раньше, и это увлекательное упражнение осталось для читателя (если вам действительно нужно знать, задайте еще один вопрос :).
Другими словами, какой цвет C смешивается с некоторым фоном так же, как смешивание A, а затем смешивание B. Это похоже на вычисление A + B (что не совпадает с B + A).