0

配列からキャンバスにオブジェクトを描画しようとしていますが、どうすればよいかわかりません。これには、図形の位置とサイズを含める必要があり、複数の種類の図形が存在します。私がこれまでに持っているコード(それは非効率的/悪いですが)

public class MCanvas extends Canvas {
    private Object[] world = {};

    public void paint(Graphics g){  
        try{  
           // How to paint all the shapes from world here?
        } catch (NullPointerException e) {  
              System.out.println(e.toString());  
        }  
      } 

}

何か案は?ありがとう。

4

1 に答える 1

0

から拡張されたオブジェクトを使用している場合は、コンテキストjava.awt.Shapeを使用してそれらを変換および描画できますGraphics2D

(Java 1.3/4 の周りの一部) 以降、ペイント エンジンはGraphics2Dインスタンスを使用することが保証されています。

public void paint(Graphics g){  
    super.paint(g);
    Graphics2D g2d = (Graphics2D)g;
    for (Object o : world) {
        if (o instanceof Shape) {
            Shape shape = (Shape)o;
            //if the shape isn't created with 
            // a location, you can translate them
            shape.translate(...,...);
            g2d.setColor(....);
            g2d.draw(shape);
            //g2d.fill(...);
        }
    }
} 

詳細については、2D グラフィックスを参照してください。

また、JPanel代わりにa を使用してCanvasから、そのpaintComponentメソッドをオーバーライドします

詳しくはカスタムペイントをご覧ください

于 2013-03-07T20:03:36.507 に答える