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)
}

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

Может быть, проблема в том, что мой вектор рисуется?

0 ответов

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