Маска круг / форма при рисовании на холсте - PullRequest
0 голосов
/ 30 апреля 2018

Я нахожусь в функции onDraw (canvas) и поэтому имею доступ к canvas

Я могу нарисовать цвет на холсте, но я пытаюсь замаскировать (удалить / вырезать) круги (или любую форму), чтобы круг мог видеть сквозь холст к слою ниже:

 val pt     = Paint(Paint.ANTI_ALIAS_FLAG)
 pt.color   = Color.WHITE
 pt.style   = Paint.Style.FILL
 pt.setXfermode(PorterDuffXfermode(PorterDuff.Mode.DST))
 canvas.drawCircle(30,30,10,pt)

Я использовал все доступные Mode.XXXX и пробовал БЕЛЫЙ, ЧЕРНЫЙ и ПРОЗРАЧНЫЙ

Есть идеи? (добавлено) Необходимость поддержки API 19 благодаря

Заранее спасибо

1 Ответ

0 голосов
/ 30 апреля 2018

Для этого можно использовать метод Canvas#clipOutPath(Path).

Как это:

canvas.clipOutPath(Path().also {
  it.addCircle(30, 30, 20, Path.Direction.CW)
})

Для уровней API ниже 26 используйте:

canvas.clipPath(Path().also {
  it.addCircle(30, 30, 20, Path.Direction.CW)
}, Region.Op.DIFFERENCE)
...