使用Graphics2D旋转形状

时间:2013-08-20 13:58:22

标签: java swing awt graphics2d

当我添加函数g2d.rotate(some Number)时,屏幕根本没有显示任何形状,如果没有此功能,一切正常。

有什么问题?

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 个答案:

答案 0 :(得分:1)

您发布的代码有几个问题:

  1. 不要覆盖paint()。你永远不应该直接调用paintComponent()。您只需将组件添加到面板,它将自动绘制。阅读Custom Painting上的Swing教程,了解更多信息和示例。

  2. 您的Polygon没有任何积分。您需要添加4个点。

  3. 旋转形状时,您还需要翻译它。

  4. 结帐Playing With ShapesRotated Icon。源代码向您展示了如何进行旋转,或者您可以按原样使用这些类。