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

2D Java Discussion :

Dessin et multiples layers


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut Dessin et multiples layers
    Bonjour,

    Est-il possible de dessiner directement à l'écran en utilisant des couches superposées (un peu comme avec les LayeredPane) ?

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oui, avec un LayeredPane ou un OverlayLayout.

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par Gfx
    Oui, avec un LayeredPane ou un OverlayLayout.
    oui, je me suis sans doute mal expliqué. Ma question plus précise est donc:
    comment dessiner (g.fillRect()) directement, sans passer par un composant Swing sur des niveaux différents ?

  4. #4
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Tu ne peux pas a moins d'ecrire toi-meme une petite architecture de layers. C'est tres facile a faire (et je suis en train de tanner les ingenieurs Java2D pour avoir ca dans Java 1.7

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par Gfx
    Tu ne peux pas a moins d'ecrire toi-meme une petite architecture de layers. C'est tres facile a faire (et je suis en train de tanner les ingenieurs Java2D pour avoir ca dans Java 1.7
    merci pour le tuyau, mais cela est sûrement au delà des capacités d'un débutant comme moi.
    finalement, les composants swing sont beaucoup plus facile à gérer car lorsqu'on les efface, ils restituent correctement le fond qu'ils recouvraient.

  6. #6
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Note que si tu veux dessiner sur un composant Swing sans recouvrir tout ce qu'il y a en dessous il faut bien penser a appeler setOpaque(false) sur le composant (sauf si tu herites de JComponent qui fait ca par defaut).

  7. #7
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    En fait, je n'ai plus de composant swing, en dehor du Jpanel.
    Je dessine les briques et la balle direct avec les instructions graphiques.
    revers de la médaille, lorsque la balle passe sur une partie de la brique, il faut que je redessine la brique...

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tu peux utiliser des calculs d'intersection d'entre la boite englobantes de la balle, de la raquette, etc ... et de la zone de clip actuelle* du Graphics pour redessiner le moins de chose possible lors des mises a jour.

    Puisqu'il t'es possible de demander la "repeinture" d'une region specifique du panel (public void repaint(long tm, int x, int y, int width, int height)).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    C'est quoi la zone de clip actuelle ?
    concernant le repaint(), je dessine les briques dans une boucle, donc le fait que je passe en paramètre une zone d'écran ne changera pas qu'il redessinera toutes les briques à chaque fois. (raison pour laquelle je n'appelle pas repaint() pour redessiner la balle à chaque mouvement.

    p.s. bonjour à la Calédonie

  10. #10
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    getClipBounds() donne la zone de l'ecran a reafficher. Il faut ecrire ses fonctions de dessin pour ne redessiner que ce qui en a besoin.

  11. #11
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    Sinon, tu peux utiliser le GLF - Graphic Layer Framework :

    une petite API simple en JAVA entièrement basé sur Java2D qui gère les layers facilement. Voici le lien :

    http://java.sun.com/products/java-media/2D/samples/index.html

    http://java.sun.com/developer/Books/2dgraphics/chapter6.html

    Cela a été mis au point par Vincent J.Hardy de chez Sun, et il l'explique en détail dans son livre "Java 2D Api Graphics", éditions SUN.

    ;-)

  12. #12
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Ok, merci pour toutes ces réponses
    je vais étudier tout cela.

  13. #13
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Je me demande d'ailleurs si GLF est adapte pour faire un jeu. J'ai le bouquin mais je n'ai jamais pris le temps d'etudier l'API de GLF. J'ai une reunion avec Vincent demain je lui poserai la question. Son livre en tout cas est vraiment genial. Ses exemples Java2D sont impressionnants.

  14. #14
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    Je confirme : j'ai le bouquin et je suis en train de le parcourir : c'est vraiment très bien fait !
    ;-)

  15. #15
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par Gfx
    Je me demande d'ailleurs si GLF est adapte pour faire un jeu. J'ai le bouquin mais je n'ai jamais pris le temps d'etudier l'API de GLF. J'ai une reunion avec Vincent demain je lui poserai la question. Son livre en tout cas est vraiment genial. Ses exemples Java2D sont impressionnants.
    Effectivement, à première vue (rapide) il semblerait qu'il s'agisse d'un empilement de couches, mais il n'est pas évident que l'on puisse dessiner en tous temps sur chaque couche comme on le veut...

Discussions similaires

  1. [OpenGL 4.x] petit problème de dessin de multiples objets
    Par thy-sins dans le forum OpenGL
    Réponses: 9
    Dernier message: 09/03/2015, 16h00
  2. SWT - superposers dessins multiples sur canvas
    Par scscjcnc dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 06/04/2013, 15h35
  3. TpaintBox ou TCanvas : dessiner sur un autre "layer"
    Par Takusen dans le forum C++Builder
    Réponses: 7
    Dernier message: 13/09/2007, 16h06
  4. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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