0

関数を追加すると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);

}
}
4

1 に答える 1

1

投稿されたコードにはいくつかの問題があります。

  1. paint() をオーバーライドしないでください。paintComponent() を直接呼び出すべきではありません。コンポーネントをパネルに追加するだけで、自動的にペイントされます。詳細と例については、カスタム ペインティングに関する Swing チュートリアルを参照してください。

  2. ポリゴンにはポイントがありません。それに4点を追加する必要があります。

  3. シェイプを回転させるときは、それを平行移動する必要もあります。

図形と回転したアイコンで遊ぶ をご覧ください。ソースコードは、ローテーションを行う方法を示しています。または、クラスをそのまま使用することもできます。

于 2013-08-20T14:47:36.767 に答える