У меня есть графическая система для Java, которая позволяет «оклеивать» объекты обоями, указывая несколько изображений, которые могут иметь (относительно) сложные параметры выравнивания и изменения размера.
Чтобы работать надлежащим образом (особенно на устройствах с очень низким энергопотреблением), я рисую изображение на внутреннем изображении, когда обои сначала окрашиваются, а затем копирую это составное изображение в целевой графический контекст, чтобы вывести его на экран. Затем композит воссоздается только в том случае, если размер объекта изменен, поэтому единственная работа для последующих перерисовок - это копирование вырезанной области из композита в целевой графический контекст.
Решение работает очень хорошо, за исключением того, что когда у меня есть PNG-изображения с прозрачностью альфа-канала, альфа-канал теряется при рисовании композита, то есть в композите все пиксели полностью непрозрачны. Таким образом, последующее копирование в контекст экранной графики не позволяет увидеть то, что находится за оклеенным обоями объектом.
Мне удалось использовать RGBImageFilter для фильтрации полностью прозрачных пикселей, но я не вижу в этом решения, чтобы заставить работать смешанную прозрачность.
Кто-нибудь знает, как я могу раскрасить изображения с неповрежденным альфа-каналом и объединить их, если два пикселя с альфа-значениями перекрываются?