Graphics2D g3 = (Graphics2D) g;
g3.translate(10, 10);
g3.rotate(Math.toRadians(90));之后,怎么让g3返回到原来的坐标系,和不旋转

解决方案 »

  1.   

    我猜:
    g3.rotate(-1*Math.toRadians(90));
    g3.translate(-10, -10);
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    public class Test {
    public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setSize(800, 600);
    frame.add(new DrawPanel());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    }class DrawPanel extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    g2.drawRect(0, 0, 100, 50);
    g2.translate(10, 10); 
    g2.rotate(Math.toRadians(90));
    // 画一个一模一样的矩形表示坐标系的确发生旋转
    g2.drawRect(0, 0, 100, 50);
    g2.rotate(-1 * Math.toRadians(90));
    g2.translate(-10, -10);
    // 为了不覆盖原有矩形,长宽都缩小1
    g2.fillRect(0, 0, 99, 49);
    }
    }1楼说的是对的,上面代码楼主自己去试