2011-03-17 33 views
3

好吧,我一直在试图旋转位于图像顶部的矩形。我有一个显示图像的Scrollable类。我可以在图像上绘制矩形。我的问题是在旋转图像时试图旋转矩形。矩形会丢失并放置在错误的位置。如何在Java中找到锚点/旋转点?

我已经尝试起诉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用来找到定位点的公式?

回答

1

我不知道的目标,但我看到了两个可能的替代办法:

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

  • 将正立的图像和矩形渲染成BufferedImage并旋转合成图像,如here所示。

1

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