我有两个关于AffineTransforms的问题。首先,我如何改变旋转半径,以便我的叶子(见代码)在一角钱而不是大半径上旋转。 45度的旋转几乎将叶子移动到屏幕的底部,虽然它确实旋转,但这不是我想要的结果(我试图在这里得到一片叶子吹风效果)。 /> 另外,旋转叶片后,如何重新着色。只有边缘是绿色的,内部是白色的。
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JFrame;
public class MovingLeaf extends JFrame {
public static void main(String[] args) {
new MovingLeaf();
}
public MovingLeaf() {
super("Beach");
setSize(600, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
GeneralPath leaf = new GeneralPath();
leaf.moveTo(300,100);
leaf.quadTo(400,100,400,200);
leaf.lineTo(380,180);
leaf.lineTo(380,160);
leaf.lineTo(360,170);
leaf.lineTo(365,150);
leaf.lineTo(335,155);
leaf.lineTo(340,135);
leaf.lineTo(320,140);
leaf.lineTo(320,120);
leaf.lineTo(305,125);
leaf.lineTo(300,100);
leaf.closePath();
g2d.setColor(Color.green);
g2d.fill(leaf);
AffineTransform rotation = new AffineTransform();
rotation.setToRotation(Math.toRadians(45));
g2d.fill(leaf);
g2d.draw(rotation.createTransformedShape(leaf));
}
}