Как можно переместить непрямоугольную (например, овальную) часть растрового изображения в холст на Android?
Подумайте, как бы вы перелистали прямоугольную часть растрового изображения:
canvas.DrawBitmap(src,src_rect,dest_rect,paint)
. К сожалению, нет соответствующих методов для непрямоугольных областей.
Представляются четыре подхода (может быть, вы знаете пятый?):
скопируйте прямоугольные границы, которые вы хотите переместить, в промежуточное растровое изображение, и перейдите к настройке пикселей, которые вы не хотите раскрасить, как прозрачные, затем нарисуйте это растровое изображение
сделать растровое изображение маски - есть ли способы блитовать с помощью отдельной маски?
используйте BitmapShader
с drawArc()/drawCircle()
; однако я не могу понять, как правильно настроить матрицу ; как бы вы инициализировали матрицу для этой операции?
использовать очень очень сложную область отсечения
Из них опция 3 - это та, с которой мне больше всего хотелось бы работать; однако я не могу понять, как это сделать; ты можешь?