我正在用java做2D图形的家庭作业。我已经完成了代码转换。但我不知道如何让变换依赖于“for循环”

我正在用java做2D图形的家庭作业。我已经完成了代码转换。但我不知道如何让变换依赖于“for循环”,java,graphics2d,Java,Graphics2d,下面是代码,当我们选择1到9时,我们需要进行相应的转换。我已经完成了转换部分。你不需要告诉我这个的确切密码。教我怎么做,或者举个简单的例子。并解释原因。多谢各位 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.IOException; public

下面是代码,当我们选择1到9时,我们需要进行相应的转换。我已经完成了转换部分。你不需要告诉我这个的确切密码。教我怎么做,或者举个简单的例子。并解释原因。多谢各位

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class Transforms2D extends JPanel {

  private class Display extends JPanel {
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.translate(300,300);  // Moves (0,0) to the center of the display.
        int whichTransform = transformSelect.getSelectedIndex();

        g2.rotate(Math.toRadians(45)); //picture 2

        g2.scale(0.5,1);
        g2.rotate(Math.toRadians(180)); //picture 3

        g2.shear(0.05,0.5); //picture 4

        g2.scale(2,1);
        g2.translate(300,0);//picture 5

        g2.shear(0.05,0.5);
        g2.rotate(Math.toRadians(45)); //picture 6

        g2.scale(0.5,1);
        g2.rotate(Math.toRadians(180)); //picture 7

        g2.scale(2,1);
        g2.rotate(Math.toRadians(45));
        g2.translate(300,400); //picture 8

        g2.rotate(Math.toRadians(180));
        g2.scale(1,2);
        g2.translate(150,300); //picture 9

     //these 8 transforms are what I did. but I don't know how to make them depending on the value of 'whichTransform' which comes from 'for loop' following.


        // TODO Apply transforms here, depending on the value of whichTransform!

        g2.drawImage(pic, -200, -150, null); // Draw image with center at (0,0).
    }
}

private Display display;
private BufferedImage pic;
private JComboBox<String> transformSelect;

public Transforms2D() throws IOException {
    pic = ImageIO.read(getClass().getClassLoader().getResource("shuttle.jpg"));
    display = new Display();
    display.setBackground(Color.YELLOW);
    display.setPreferredSize(new Dimension(600,600));
    transformSelect = new JComboBox<String>();
    transformSelect.addItem("None");
    for (int i = 1; i < 10; i++) {
        transformSelect.addItem("No. " + i);
    }
    transformSelect.addActionListener( new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            display.repaint();
        }
    });
    setLayout(new BorderLayout(3,3));
    setBackground(Color.GRAY);
    setBorder(BorderFactory.createLineBorder(Color.GRAY,10));
    JPanel top = new JPanel();
    top.setLayout(new FlowLayout(FlowLayout.CENTER));
    top.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
    top.add(new JLabel("Transform: "));
    top.add(transformSelect);
    add(display,BorderLayout.CENTER);
    add(top,BorderLayout.NORTH);
}


public static void main(String[] args) throws IOException {
    JFrame window = new JFrame("2D Transforms");
    window.setContentPane(new Transforms2D());
    window.pack();
    window.setResizable(false);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    window.setLocation( (screen.width - window.getWidth())/2, (screen.height - window.getHeight())/2 );
    window.setVisible(true);
}

}使用开关盒。这是我作业的代码

import com.sun.javafx.geom.transform.Affine3D;
import com.sun.javafx.geom.transform.BaseTransform;
import java.awt.*;
import static java.awt.PageAttributes.MediaType.C;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Math;
import javafx.scene.transform.Transform;

public class Transforms2D extends JPanel {

    private class Display extends JPanel {
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g;


            g2.translate(300,300);  // Moves (0,0) to the center of the display.
            int whichTransform = transformSelect.getSelectedIndex();
            switch(whichTransform){
                            case 0:
                                g2.rotate(0);
                                break;
                            case 1:
                                g2.scale(0.5,0.5);
                                g2.rotate(0);
                                break;
                            case 2:
                                g2.scale(0.8, 0.8);
                                g2.rotate(Math.PI/4);
                                break;
                            case 3:
                                g2.scale(0.5,0.8);
                                g2.rotate(Math.PI);
                                break;
                            case 4:
                                g2.scale(0.8,0.8);
                                //g2.rotate(Math.PI/2);
                                g2.shear(0.5, 0);
                                break;
                            case 5:
                                g2.scale(0.8,0.4);
                                g2.translate(0,-600);
                                break;
                            case 6:
                                g2.scale(0.8, 0.8);
                                g2.rotate(Math.PI/2);
                                g2.shear(0.5,0);
                                break;
                            case 7:
                                g2.scale(0.5,0.8);
                                g2.rotate(Math.PI);
                                break;
                            case 8:
                                g2.scale(1.0,0.5); // 0.8 - urgunii urt, 0.4 - undriin urt
                                g2.translate(0,400);
                                g2.rotate(Math.PI/8);
                                break;
                            case 9:
                                g2.translate(185,0);
                                g2.shear(0,0.5);
                                g2.scale(0.6,0.7);
                                g2.rotate(Math.PI);
                                break;
                        }
            // TODO Apply transforms here, depending on the value of whichTransform!

            g2.drawImage(pic, -200, -150, null); // Draw image with center at (0,0).
        }
    }

    private Display display;
    private BufferedImage pic;
    private JComboBox<String> transformSelect;
        private File f;

    public Transforms2D() throws IOException {
        pic = ImageIO.read(new File("Image path"));
        display = new Display();
        display.setBackground(Color.YELLOW);
        display.setPreferredSize(new Dimension(600,600));
        transformSelect = new JComboBox<String>();
        transformSelect.addItem("None");
        for (int i = 1; i < 10; i++) {
            transformSelect.addItem("No. " + i);
        }
        transformSelect.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                display.repaint();
            }
        });
        setLayout(new BorderLayout(3,3));
        setBackground(Color.GRAY);
        setBorder(BorderFactory.createLineBorder(Color.GRAY,10));
        JPanel top = new JPanel();
        top.setLayout(new FlowLayout(FlowLayout.CENTER));
        top.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
        top.add(new JLabel("Transform: "));
        top.add(transformSelect);
        add(display,BorderLayout.CENTER);
        add(top,BorderLayout.NORTH);
    }


    public static void main(String[] args) throws IOException {
        JFrame window = new JFrame("2D Transforms");
        window.setContentPane(new Transforms2D());
        window.pack();
        window.setResizable(false);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        window.setLocation( (screen.width - window.getWidth())/2, (screen.height - window.getHeight())/2 );
        window.setVisible(true);
    }

}