Soucis de Graphisme

Résolu
Maroc789
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
- 15 avril 2014 à 20:24
Maroc789
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
- 17 avril 2014 à 20:55
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

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
16 avril 2014 à 07:46
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.
0
Twinuts
Messages postés
5372
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
24 mai 2022
111
16 avril 2014 à 08:26
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...

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

16 avril 2014 à 15:49
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.
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
17 avril 2014 à 08:11
Franchement, tu n'écoutes rien et tu ne veux rien comprendre donc , débrouilles toi comme tu veux.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

17 avril 2014 à 20:55
Ben excuse moi j'ai testé ton GridLayout sa ne me convient pas. Mais c'est bon merci.
0