2015-06-25 2 views
0

У меня есть стек растровых изображений, которые мне нужно отображать один над другим. Я достигаю этого с относительной компоновкой и несколькими ImageViews друг над другом, у всех которых есть битмап, назначенный ему.Полупрозрачный растровый оверлей отображает неправильный цвет

Это прекрасно работает, но когда верхние слои полупрозрачны, цвета нижнего растрового изображения отключены.

Все мои растровые изображения используют Config.ARGB_8888.

Скажем, что верхний слой красного цвета с альфой 50%, а нижний слой зеленый с альфой 100%.

Я могу либо установить цвет растрового изображения на красный, то альфа-изображение ImageView на 0.5f, и он будет отображать зеленый цвет ниже штрафа (темно-зеленый с красным, смешанным).

Если я установил растровые пиксели на 50% красный, как это: bmp.eraseColor(0x7Fff0000); и оставьте изображениеView alpha на 100%, зеленый ниже будет отображаться как желтый, смешивая красный и зеленый, а не накладывая его.

К сожалению, я не могу использовать (рабочую) кулачную версию, потому что альфа на растровом изображении выше не будет однородной.

Есть ли режим режима наложения для использования истинных цветов при использовании полупрозрачных пикселей в растровом изображении?

EDIT: Я также попытался установить несколько изображений PorterDuffXfermodes в ImageViews, но ни один из них не дает правильный результат.

Paint paint = new Paint(); 
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); //OVERLAY//ADD//SCREEN//DARKEN//LIGHTEN 
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint); 

ответ

0

Получил это, чтобы допустить распространение альфы, чтобы получить желаемый результат.

Смежные вопросы