рисование части растрового изображения на холсте Android - PullRequest
3 голосов
/ 29 сентября 2010

Как можно переместить непрямоугольную (например, овальную) часть растрового изображения в холст на Android?

Подумайте, как бы вы перелистали прямоугольную часть растрового изображения: canvas.DrawBitmap(src,src_rect,dest_rect,paint). К сожалению, нет соответствующих методов для непрямоугольных областей.

Представляются четыре подхода (может быть, вы знаете пятый?):

  1. скопируйте прямоугольные границы, которые вы хотите переместить, в промежуточное растровое изображение, и перейдите к настройке пикселей, которые вы не хотите раскрасить, как прозрачные, затем нарисуйте это растровое изображение

  2. сделать растровое изображение маски - есть ли способы блитовать с помощью отдельной маски?

  3. используйте BitmapShader с drawArc()/drawCircle(); однако я не могу понять, как правильно настроить матрицу ; как бы вы инициализировали матрицу для этой операции?

  4. использовать очень очень сложную область отсечения

Из них опция 3 - это та, с которой мне больше всего хотелось бы работать; однако я не могу понять, как это сделать; ты можешь?

1 Ответ

3 голосов
/ 30 сентября 2010

Вы можете использовать вариант № 3, это, вероятно, самый простой.Другой способ - нарисовать фигуру, которую хотите обрезать, в промежуточном растровом изображении (ARGB8888), а затем нарисовать исходное растровое изображение, используя DstIn или DstOut xfermode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...