问题描述
我一直在寻找一些类似的问题,但没有一个能确切回答我的需求。在我发现的解决方案中,每个人都旋转图像而不移动,但是我需要的是使图像围绕初始位置旋转,而不是使其在位置旋转。
我正在使用的代码(找到的内容):
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(angle),img.getWidth() / 2,img.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);
img = op.filter(img,null);
g.drawImage(img,getX(),getY(),null);
我需要使图像相对于图像的第一个像素旋转。
解决方法
您正在调用的rotate
方法以锚点为图片中心:
https://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html#rotate(double,%20double)
尝试仅传递旋转角度本身,它应该绕左上角旋转:
transform.rotate(Math.toRadians(angle));