如何绘制一个旋转的矩形

3

http://i.stack.imgur.com/JQGTE.png

有人能分享一下代码,如何绘制这样的矩形?(不是垂直的,不是水平的,介于两者之间)因为我发现你只能向函数DrawRect()指定4个整数,而不能指定4个点。

矩形的区域必须对触摸敏感(我使用Contains()方法)

我尝试过,Matrix和Rotate()仅更新图形,但矩形的区域保持与原来相同


你可能需要澄清一下,你希望有人能够把手指放在那里,并让程序感知矩形内的触摸。 - Robert Harvey
3个回答

1

根据@fortran的建议进行转换后,您可以使用Matrix.mapPoints中的一个重载来查找矩形的新角落。您可能需要找到一些复杂的数学并自行进行碰撞检测。在原始矩形上调用Matrix.mapPoints()的逆变换,通过传递触摸坐标进行碰撞检测,可能会更容易一些。


可能是吧,但我不擅长数学。你能否可能展示一下解决方案? - Artifis
我从未编写过任何代码(现在也无法访问Java SDK),但是这个问题得出了相同的想法,@JeffH的答案链接到数学知识,如果反转不可行,则可以参考。 - atheaos

0

据我尝试,矩阵只能转换图形,矩形的物理区域仍然保持不变,并且我没有找到一个Contrains()方法(除了Rect.Contains())来检查点是否在新矩形内部。 - Artifis
旋转也不会更新矩形的面积,它只会更新图形(并留下一个“幻影”矩形区域),那么我如何确定某个点是否在旋转后的矩形内部呢? - Artifis

0

我找到了解决方案 - 最简单的方法是使用Path类,通过点绘制一个自由旋转的矩形,然后创建一个具有Contains()函数的区域方法。

无需数学和费力的工作,既漂亮又容易。


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