Soucis de Graphisme [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
-
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
-
Bonjour, je vous expliques mon problème , je vous ai mis un petit bout de code. Voila ce que je voudrais c'est savoir si l'on peut dessiner une image sur une image ou cela est impossible? En fait ce que je voudrais c'est pas dessiner une image par dessus une autre c'est en gardant le meme système pouvoir dessiner un triangle sur une image pour definir chaque joueur.

Merci de votre compréhension.



public class CreationGrille extends JPanel {

HashMap<ModelJoueur,Image> images = new HashMap<ModelJoueur,Image>();
JoueurHumain joueurHumain = new JoueurHumain("joueur1");
JoueurHumain joueurHumain2 = new JoueurHumain("joueur2");
TypesTerrains grilleType[][] = new TypesTerrains[4][4];

public CreationGrille(GrilleJeu grille) {

images.put(joueurHumain,lireImage("image.jpg"));
images.put(joueurHumain2,lireImage("image2.jpg"));



public void paintComponent(Graphics g) {
super.paintComponent(g);
grilleGraphique(g);
}

private Image lireImage(String string) {

try {

return ImageIO.read(new File(string));

} catch (IOException e1) {
e1.printStackTrace();
return null;
}

}

public void grilleGraphique(Graphics g) {
CaseTerrain[][] caseTerrains = grilleJeu.getGrille();

int width = getWidth();
int height = getHeight();
int largeur = width / grilleJeu.getAbcisseMax();
int hauteur = height / grilleJeu.getOrdonneeMax();


for (int i = 0; i < grilleJeu.getAbcisseMax(); i++) {
for (int j = 0; j < grilleJeu.getOrdonneeMax(); j++) {
int x = i * largeur;
int y = j * hauteur;

g.drawImage(images.get(grilleType[i][j]), x,
y, largeur, hauteur, this);
g.drawImage(images2.get(grilleType[i][j]),x,y,largeur,hauteur,this);


}
}




5 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Si tu avais au moins essayé de faire ce que je te conseillais ici : http://codes-sources.commentcamarche.net/forum/affich-10025185-probleme-pour-l-affichage-des-images

Cela aurait été possible, mais comme tu préfère tout dessiner dans paintComponent sans utiliser Swing, je te laisse le soin de trouver la solution qui sera beaucoup plus complexe que si tu m'avais écouté dès le départ.

Bon courage.
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
110
Salut,

+1, après j'ajouterai juste qu'en java si tu veux dessiner il faut le faire via un BufferedImage (idée de base proposée par julien...)

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Draw extends JFrame {
  private static final long serialVersionUID = -1627995325677358600L;

  public Draw() {
    try {
      setContentPane(new JLabel(new ImageIcon(getImage())));
    } catch (final MalformedURLException e) {
      e.printStackTrace();
    } catch (final IOException e) {
      e.printStackTrace();
    }
    pack();
    setLocationRelativeTo(null);
  }

  public BufferedImage getImage() throws MalformedURLException, IOException {
    final BufferedImage bi = ImageIO
        .read(new URL(
            "http://static.ccm2.net/codes-sources.commentcamarche.net/_skin/_local/img/log_cs_beta2.png"));
    final Graphics2D g2 = (Graphics2D) bi.getGraphics();
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setColor(Color.BLACK);
    g2.fillOval(5, 5, 50, 50);
    return bi;
  }

  public static void main(final String[] args) {
    new Draw().setVisible(true);
  }
}



A toi d'adapter...

Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014

En fait au départ j'ai dejà une grille de faite donc j'utilise celle là. Et je la dessine avec un drawLine. Ma grille en c'est très simple c'est pour un jeu de stratégie guerrière donc en fait dans la grille c'est différent type de terrain initialisé aléatoirement en fonction des coordonnées tapées par l'utilisateur prenons par exemple mer et montagne. J'ai deux images pour les différencier mais une montagne peut appartenir à un joueur donc c'est pour cela que j 'aimerais dessiner un triangle dessus pour les différencier d'une montagne quelconque sinon bien sur que j'aurais un GridLayout c'est beaucoup plus simple.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Franchement, tu n'écoutes rien et tu ne veux rien comprendre donc , débrouilles toi comme tu veux.
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014

Ben excuse moi j'ai testé ton GridLayout sa ne me convient pas. Mais c'est bon merci.