设置Radius Of Rotation仿射变换

时间:2014-02-25 20:32:46

标签: java swing graphics

我有两个关于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));
    }
}

0 个答案:

没有答案
相关问题