如何在Java中旋转图形
我在JPanel
绘制了一些图形,如圆形,矩形等。
但我想绘制一些特定程度旋转的图形,如旋转的椭圆。 我该怎么办?
如果您使用的是普通Graphics
,请首先转换为Graphics2D
:
Graphics2D g2d = (Graphics2D)g;
要旋转整个Graphics2D
:
g2d.rotate(Math.toRadians(degrees)); //draw shape/image (will be rotated)
要重置旋转(所以你只旋转一件事):
AffineTransform old = g2d.getTransform(); g2d.rotate(Math.toRadians(degrees)); //draw shape/image (will be rotated) g2d.setTransform(old); //things you draw after here will not be rotated
例:
class MyPanel extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; AffineTransform old = g2d.getTransform(); g2d.rotate(Math.toRadians(degrees)); //draw shape/image (will be rotated) g2d.setTransform(old); //things you draw after here will not be rotated } }
在paintComponent()
重写方法中,将Graphics参数强制转换为Graphics2D,在此Graphics2D上调用rotate()
,然后绘制椭圆。