2010-01-17 8 views
0

Im essayant de se familiariser wth java 2d graphiquesJava 2D Graphics: ne peut pas superposer des images

Ive essentiellement obtenu un JPanel avec une image backgrounfd en elle comme ceci:

public MapFrame(Plotting pl){ 
    this.pl =pl; 
    this.setPreferredSize(new Dimension(984,884)); 
    this.setBorder(BorderFactory.createEtchedBorder()); 
    try { 
      getFileImage("stars.jpg"); 
     } 
     catch (Exception ex) { 

     } 

    this.addMouseMotionListener(this); 
    this.addMouseListener(this); 
} 

public void paintComponent(Graphics g) { 
    super.paintComponent(g);  
    g.drawImage(bg, 0, 0, null); 
    Graphics2D g2d = (Graphics2D) g; 
      g2d.setColor(new Color(0x756b48)); 
      g2d.drawLine(0,0,0,100); 
} 

private void getFileImage(String filePath) throws InterruptedException, IOException { 
     FileInputStream in = new FileInputStream(filePath); 
     byte [] b=new byte[in.available()]; 
     in.read(b); 
     in.close(); 
     bg=Toolkit.getDefaultToolkit().createImage(b); 
     MediaTracker mt=new MediaTracker(this); 
     mt.addImage(bg,0); 
     mt.waitForAll(); 
    } 

Dans le composant de peinture Je veux superposer de petites images 12x12 pixels dans une boucle à divers points xy qui obtiennent mal de certains xml.

cant semblent obtenir une image à superposer sur mon premier

Im un peu perdu ici et v rouillé

Toute aide b gr8

+0

hourras pour faute de frappe andriyev – user252693

+0

On ne sait pas ce que vous essayez de faire. La boucle que vous décrivez semble être manquante. Voyez-vous le résultat du premier appel drawImage à l'écran? –

Répondre

0
public void paintComponent(Graphics g) { 
    g.drawImage(bg, 0, 0, null); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setColor(new Color(0x756b48)); 
    g2d.drawLine(0,0,0,100); 

    for(SomeXMLObject o : yourXMLSource) { 
     g.drawImage(yourImage, o.x, o.y, null); 
    } 
} 

S'il vous plaît préciser plus clairement comment votre XML est analysé, si vous l'avez déjà fait. Ensuite, vous devrez également charger l'image "12x12". SomeXMLObject est une structure contenant x et y variables, extraites de votre XML.

Si vous appelez g.drawImage (...) après l'arrière-plan: il sera peint après l'arrière-plan, et donc superposé. Assurez-vous de charger une image png-24, pour activer les zones de translucidité, si vous le souhaitez.

+0

L'analyse XmL n'est pas un problème J'ai toujours obtenu tous mes noms de fichiers et je peux les parcourir. Ma première image est peinte sur un jPanel comme arrière-plan sans problème. Je veux ensuite superposer des images plus petites à certains points (que je connais et a bien de mon xml) devant l'arrière-plan – user252693

+0

Oui, c'est ce que j'ai compris de votre question. Encore; personne ne peut vous aider si vous ne fournissez pas suffisamment d'informations. Par exemple; quel type d'analyse XML utilisez-vous, comment sont stockées les coordonnées: en tant qu'objet? Deux autres gars ont essentiellement dit la même chose: utilisez g.drawImage(...);, mais ... vous êtes le programmeur! Donc, vous devez programmer quelque chose pour que cela fonctionne, à droite. – Pindatjuh

0

Si vous souhaitez peindre une image à différents endroits, il est aussi simple que d'appeler Graphics.drawImage(Image, int, int, ImageObserver) plusieurs fois pour des coordonnées différentes (comme indiqué dans la réponse précédente).

En ce qui concerne le chargement d'images, je vous recommande d'utiliser l'un des ImageIO.read methods instead of doing it yourself.

0

You probably want to use use the ImageIO library to load your image. If you have an image filename all you need to do to load it is

BufferedImage bimg = ImageIO.load(new File(filename)); 

That's a little easier then the code you have above.

After that, like other people said you can use the g.drawImage(bimg,x,y,this); pour dessiner les images.

0

Oh Dear

Id formaté les noms de mes ressources mauvaises

quel âne je suis

Tous les bons conseils que je pense que les gars

Questions connexes