如何在Android中旋转一个矩形对象

4

好的,我使用以下代码在画布上创建了一个矩形:

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
matrix.setRotate(value); matrix.mapRect(r); 然后 r 将拥有你旋转后的矩形。 - dymmeh
你找到解决方案了吗? - Mayur R. Amipara
这不是一个可绘制对象,我正在画矩形在画布上。 - Nirmal Prajapat
2个回答

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()来查找角落是如何转换的。

你如何将它围绕中心旋转? - jjxtra
4
我认为它没有达到预期的效果,因为数据结构“Rect”仅表示为水平矩形。虽然矩阵旋转了其组成点(左上角和右下角),但“Rect”对象仍将保持为水平矩形。 - user2565010

2

请使用以下内容:

Rect r2 = new Rect(r1);
Matrix mat = new Matrix();
mat.setRotate(-90, r2.centerX(), r2.centerY());
mat.mapRect(r2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接