2013-03-13 2 views
3

ИТАК я создал прямоугольник на холсте, используя этот кодКак повернуть объект Rect в Android

Rect r =new Rect((point.x - rectWidth/2), (point.y - rectHeight/2),(point.x-rectWidth/2),(point.y + rectHeight/2)); 

точку, являющуюся центром прямоугольника определяется сенсорным событием. Но теперь я хочу, чтобы можно было повернуть этот прямоугольник. Есть ли какой-либо код или метод, который позволит пользователю поворачивать фигуру вокруг своего центра. Я также заинтересован в получении угловых точек такого прямоугольника. Любая помощь приветствуется. Благодарю.

+3

Используйте матрицу для поворота RectF вокруг ее центра. – dymmeh

+1

Не могли бы вы рассказать мне, как наложить прямоугольник на матрицу – user1998160

+0

matrix.setRotate (value); matrix.mapRect (г); Тогда r будет иметь ваш повернутый прямоугольник – dymmeh

ответ

8

Чтобы повернуть прямоугольник вокруг своего центра (в отличие от происхождения):

Matrix m = new Matrix(); 
// point is the point about which to rotate. 
m.setRotate(degrees, point.x, point.y); 
m.mapRect(r); 

Вы также можете использовать Matrix.mapPoints(), чтобы найти, как углы трансформируются.

+0

Как бы вы повернуть его вокруг центра? – jjxtra

+1

не работает! привести пример. –

+1

Я думаю, что это не дает желаемого эффекта, потому что структура данных Rect представлена ​​только как горизонтальный прямоугольник. Матрица поворачивает свои составляющие точки (верхний левый угол и нижний правый угол), но объект Rect останется горизонтальным прямоугольником. – user2565010

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