Android canvas drawbitmap xfermode clear рисует прямоугольник вместо растрового изображения
Я делаю приложение на Android с помощью Kotlin. У меня есть макет, отображающий маску формы лица. Вот чего я хочу добиться:
Это мой результат прямо сейчас:
В моем коде у меня есть представление, определяющее черный фон. Это метод onDraw, который я переопределяю:
override fun onDraw(canvas: Canvas?) {
if(canvas != null) {
val bitmap = mDrawable!!.toBitmap()
val marginV = 64
val left = mDrawable!!.left.toFloat()
val top = mDrawable!!.top.toFloat() + marginV
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN)
// draw hole
canvas.drawBitmap(bitmap, left, top, paint)
// draw shape
canvas.drawBitmap(bitmap, left, top, null)
}
super.onDraw(canvas)
}
Я действительно не знаю, в чем здесь проблема. Я уже сделал что-то подобное, используя прямоугольник вместо растрового изображения, и это работает хорошо.
Может быть, проблема в том, что мой вектор рисуется?