使用Graphics2D旋转方法确实是最简单的方法.这是一个简单的实现:
int centerX = width / 2;
int centerY = height / 2;
double angle = Math.atan2(centerY - mouseY, centerX - mouseX) - Math.PI / 2;
((Graphics2D)g).rotate(angle, centerX, centerY);
g.fillRect(...); // draw your rectangle
如果要在完成后移除旋转,以便可以继续正常绘制,请使用:
Graphics2D g2d = (Graphics2D)g;
AffineTransform transform = g2d.getTransform();
g2d.rotate(angle, centerX, centerY);
g2d.fillRect(...); // draw your rectangle
g2d.setTransform(transform);
无论如何只使用Graphics2D进行抗锯齿等等是个好主意.