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

3

好的,我一直在尝试旋转位于图像上方的矩形。我有一个可滚动的类,用于显示图像。我可以在图像上方绘制矩形。我的问题是当图像旋转时尝试旋转矩形。矩形会丢失并放置在错误的位置。

我已经尝试使用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个回答

1

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


1

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

  • 使用反向变换,如此处所示。

  • 将直立图像和矩形渲染到BufferedImage中,并旋转组合图像,如此处所示。


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