如何在Java中找到锚点/旋转点?

时间:2011-03-17 16:04:58

标签: java swing trigonometry

好的我一直在尝试旋转位于图像顶部的矩形。我有一个显示图像的Scrollable类。我可以在图像上绘制矩形。我的问题是在旋转图像时尝试旋转矩形。矩形丢失并放在错误的位置。

我已经尝试起诉Graphics2D,AffineTransform,createTransformedShape()但没有运气。

我现在要做的是手动旋转矩形。我正在尝试使用以下公式获得矩形点(x,y):

double rectX = (Math.cos(Math.toRadians(90)) * (x - anchorX) - Math.sin(Math.toRadians(90)) * (y - anchorY)) + anchorY;

double rectY = (Math.sin(Math.toRadians(90)) * (x - anchorX) - Math.cos(Math.toRadians(90)) * (y - anchorY)) + anchorY;

如何使用Java找到anchorX和anchorY值?我已尝试将图像高度跳过2,但不适用于所有旋转角度。我必须得到JPanel的宽度和高度吗?是否有Java用于查找锚点的公式?

2 个答案:

答案 0 :(得分:1)

如果你想让它像一个横跨顶部的盒子,你必须找到行进方向的底角。如果你向右滚动,你需要在右下角。

答案 1 :(得分:1)

我不确定目标,但我看到了两种可能的替代方法:

  • 使用逆变换,如here所示。

  • 将竖直图像和矩形渲染为BufferedImage并旋转合成图像,如图here所示。