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 371
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 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 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 371
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
Rejoignez-nous