2013-03-07 4 views
0

J'essaie de dessiner des objets sur une toile à partir d'un tableau, mais la chose est, je n'ai aucune idée de comment? Cela doit inclure la position et la taille des formes, et il y aura plus d'un type de forme. Le code que j'ai jusqu'ici (c'est inefficace/mauvais si)Dessiner un tableau sur une toile

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()); 
     } 
     } 

} 

Des idées? Merci.

+1

* « mais la chose est, je n'ai aucune idée comment? » * La chose est, ce n'est pas une question (même avec bousculer '?' à la fin). Quelle est votre question spécifique? Aussi, pourquoi utiliser AWT en ce millénaire? Ici, nous utilisons Swing. –

+0

N'oubliez pas d'appeler super.paint en premier. Quelles sont les formes? – MadProgrammer

+0

@MadProgrammer Ils sont ajoutés dynamiquement au tableau, mais principalement aux rectangles et aux ovales. – YepNepDep

Répondre

0

si vous utilisez des objets qui vont de java.awt.Shape, vous pouvez traduire et les dessiner en utilisant un Graphics2D contexte

Depuis (certains whe autour de Java 1.3/4), le moteur de peinture est garanti d'utiliser Graphics2D exemple.

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(...); 
     } 
    } 
} 

Vous aimeriez jeter un oeil à 2D Graphics pour plus de détails.

En outre, utiliser un JPanel au lieu de Canvas puis remplacer la méthode paintComponent

Jetez un oeil à Custom Painting pour plus de détails

+0

Ah, très utile. Merci pour cela, je vais y regarder. – YepNepDep

Questions connexes