2011-09-06 2 views
0

Я застрял со следующей проблемой:Как извлечь регион из андроида Bitmap

У меня есть андроид Bitmap и набор из 4-координат, представляющий собой прямоугольник. Однако прямоугольник можно вращать. Например, у меня могут быть координаты 0/50, 50/0, 100/50, 50/100. Поэтому я не могу просто использовать функцию Canvas drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint Paint), потому что я не могу указать такие координаты в прямом объекте. Какой был бы лучший способ извлечь такой прямоугольник?

+0

Посмотрите на образец кода лунного посадочного модуля, который поставляется вместе с SDK. В LunarView.java найдите «rotate». Это покажет вам, как они вращают чертеж космического корабля. – NickT

ответ

1

Вы можете рассчитать, какой угол вашего прямоугольника наклонен? В этом случае вы можете повернуть холст:

canvas.rotate(angle, px, py); 

где px и py - координаты центра прямоугольника.

И затем сделайте drawBitmap (растровое изображение растрового изображения, Rect src, RectF dst, Paint paint).

+0

Я могу рассчитать угол. Но как мне перевести те точки, которые я ранее рассчитал, на те, которые соответствуют повернутому холсту? По моему опыту функция mapPoints матрицы не работает. По крайней мере, это то, что я испытал при повороте изображения с помощью матрицы поворота и попытался затем отобразить исходные точки. Тем не менее, возможно, стоит попробовать, думаю, я увижу, работает ли это. – Christian

+0

Я думаю, что я пропустил, как работает на холсте. Таким образом, это может повернуть сам холст. По моему мнению, это может привести к тому, что мой прямоугольник, который ранее был перекошен, теперь был привязан. Но я не вижу, как это решает проблему, что я не могу указать координаты прямоугольника, который я хочу вырезать в первую очередь. @NickT с первого взгляда на образец LunarView, похоже, это то, что там сделано. Они имеют приглушенное изображение и хотят, чтобы его нарисовали в некоторой степени. Я, с другой стороны, хочу, чтобы это было наоборот. – Christian

Смежные вопросы