Как правильно использовать Xfermode?

Мне тяжело иметь дело с Xfermode.

Вот код, который я написал

val bitmap = Bitmap.createBitmap(container.width, container.height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)

val paint = Paint()
paint.isAntiAlias = true
paint.isFilterBitmap = true
paint.isDither = true

val shape = ShapeDrawable(PathShape(PathParser.createPathFromPathData(pathData), container.width.toFloat(), container.height.toFloat()))
shape.setBounds(0, 0, container.width, container.height)
shape.intrinsicHeight = container.height
shape.intrinsicWidth = container.width
shape.paint.color = Color.GREEN
shape.paint.style = Paint.Style.FILL

paint.color = Color.RED

canvas.drawARGB(255, 255, 0,0)
shape.paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN)
shape.draw(canvas)

val y = BitmapDrawable(resources, bitmap)
container.backgroundDrawable = y

Основная линия здесь

shape.paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN)

Это вывод, когда эта строка присутствует против когда я закомментирую эту строку

Таким образом, второе изображение является правильным. На первом изображении я ожидал, что зеленая фигура будет действовать как маска, и я получу эту фигуру с красным цветом, но, как мы видим, это не так. Я понятия не имею, почему это не работает. Любая помощь будет высоко оценена!

0 ответов

Другие вопросы по тегам