IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

Créer formes par dessus un background


Sujet :

Graphisme Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Points : 6
    Points
    6
    Par défaut Créer formes par dessus un background
    Bonjour.

    J'ai une fenetre avec un background vert, je voudrais dessiner dedans.
    Le soucis c'est que le background se met par dessus mon dessin.
    Voyez plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package test;
     
    import java.awt.*;
    import javax.swing.*;
     
    public class Fenetre extends JFrame
    {
    	private static final long serialVersionUID = 1L;
    	public static void main(String[] args)
    	{
    		Fenetre t = new Fenetre();
    	}
     
    	public Fenetre()
    	{
    		super();
    		this.setSize(300, 300);
    		this.setVisible(true);
    		this.getContentPane().setBackground(Color.BLUE);
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    	}
     
    	public void paint(Graphics g)
    	{
    		Color c = g.getColor();
    		g.setColor(Color.green);
    		g.fillRect(10,30,80,80);
    		g.setColor(c);
    	}
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    La tu mets la couleur pour le contentpane que tu n'utilise jamais en fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getContentPane().setBackground(Color.BLUE);
    Essaye de mettre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setBackground(Color.BLUE);
    mais faut voir si tu comptes utiliser le contentpane ou pas ...

    De plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void paint(Graphics g)
    {
    	Color c = g.getColor(); // Ne semble pas servir actuelement (voir remarque en dessous);
    	g.setColor(Color.green);
    	g.fillRect(10,30,80,80);
    	g.setColor(c); // Ne sert a rien car tu ne dessine plus rien après
    }
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    Merci, en effet je pense que le contentpane ne servait à rien.
    et en effet, les getcolor() et setcolor() étaient inutiles.

    Par contre je comprends pas trop comment on crée des méthodes de dessin sans le paint()...
    Voici ma méthode, qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void dessiner()
    {
    	Graphics g = getGraphics();
    	g.fillRect(10,30,80,80);
    	g.dispose();
    }
    En fait je ne comprends pas trop comment fonctionne Graphics.
    Il semble impossible de faire de Graphics g = new Graphics() par exemple.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Le graphics qui est passé a paint suffit pour dessiner "en direct".

    Mais par contre si tu veux dessiner dans une image par exemple alors la tu auras besoin de créer un graphics te servant a dessiner dans l'image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BufferedImage image = new BufferedImage(160, 160, BufferedImage.TYPE_BYTE_GRAY);
    Graphics2D g1 = image.createGraphics();
    Voir la FAQ

    Et tu pourras par la suite utiliser l'image comme bon te semble (dans le paint) ou ailleurs.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    Je ne cherche pas a dessiner dans une image juste a construire mes methodes de dessin.
    Ce sont des dessins très simples (lignes, ...) donc j'utiliserais Graphics et non Graphics2d

    Je n'ai pas trouvé comment faire ce truc tout simple...

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Bah il y'a de fortes chance que tu puisses utiliser Graphics2D (il suffit de caster l'objet Graphics), car Graphics est un peu sommaire. (mais c'est mon opinion).

    Mais quoiqu'il en soit que tu utilises graphics ou graphics2d le principe reste le même.

    Peut être que ceci t'aiderais ? http://duj.developpez.com/tutoriels/java/dessin/intro/
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    Ok, j'ai compris.

    Il suffit que dans la méthode paint ou paintComponent, on appelle notre méthode de dessin avec le Graphics en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void paintComponent(Graphics g) {
      dessinerMaison(g);
      dessinerVoiture(g);
    }
     
    public void dessinerMaison(Graphics g) {g.draw....}
    public void dessinerVoiture(Graphics g) {g.draw....}

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Oui c'est une bonnes manière de faire cela ainsi
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Background-image qui se met par dessus les éléments
    Par dev14 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 12/12/2013, 17h29
  2. Background-image par dessus un background
    Par ApocKalipsS dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/09/2011, 15h59
  3. Réponses: 6
    Dernier message: 16/09/2010, 13h46
  4. Réponses: 5
    Dernier message: 20/04/2009, 12h11
  5. Un background par dessus un autre
    Par psychoBob dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 14/05/2006, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo