2013-08-20 101 views
0

當我添加功能g2d.rotate(some Number)時,屏幕根本沒有顯示任何形狀,沒有此功能,一切正常。使用Graphics2D旋轉形狀

什麼問題?

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D)g; 
    g2d.setColor(color); 
    Polygon polygon = new Polygon(xCordinate,yCordinate,4); 

    // g2d.rotate(Math.toRadians(45)); 
    g2d.draw(polygon); 
    g2d.fill(polygon); 
} 

,並在主:

public class Main extends JPanel { 
    Camera c=new Camera(100, 50, (Math.PI)*2, 0, 150,200,Math.PI,Color.MAGENTA); 
    //Camera c1=new Camera(100, 50, (Math.PI)*2, 0, 150,200,0,Color.black); 
    public static void main(String[] a) { 
     JFrame f = new JFrame(); 
     f.setSize(400, 400); 
     f.add(new Main()); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 

    public void paint(Graphics g) { 
     //c1.paintComponent(g); 
     c.paintComponent(g); 

} 
} 

回答

1

您發佈的代碼中有幾個問題:

  1. 不要重寫paint()。你不應該直接調用paintComponent()。您只需將該組件添加到面板中並自動進行繪製。有關更多信息和示例,請參閱Custom Painting上的Swing教程。

  2. Your Polygon沒有任何分數。你需要添加4點。

  3. 當你旋轉一個Shape時,你也需要翻譯它。

退房Playing With ShapesRotated Icon。源代碼向你展示瞭如何旋轉,或者你可以直接使用這些類。