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 :

programme de dessin et paint()


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut programme de dessin et paint()
    Bonjour,

    je suis sur le point d'entamer la réalisation d'une petite application de dessin et n'ayant pas encore beaucoup travaillée avec les graphisme en java je me pause quelques question:

    Je sais que de base la manière de dessiner sur une interface est d'utiliser un JPanel pour lequel on aura surchargée les méthodes d'affichage (paint ect...)

    mon problème est que dans mon cas je ne suis pas certaine qu'utiliser une méthode réaffichant tout soit "efficace" ... (au bout de 5 min je devrais avoir une 100aine de composant sur mon interface ... )

    j'essaye donc de reflechir sur des moyens optimisé de réaffichage mais j'éprouve quelques difficultés .

    Je cherche donc soit des exemples de codes ou alors des conseils pour savoir dans quel direction je dois m'orienter ...

    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tant que tu connais le "clip" du composant que tu dois redessiner (c'est à dire le plus petit rectangle contenant la chose que tu veux réafficher tu peux toujours utiliser cette version de la méthode repaint.
    Ensuite que veux tu dire pr une 100aine de composants, si ce sont des composants swing, mieux vaurait repenser ton design car c'est foutrement trop. mieux vaudrait séparer ça en plusieurs panels différents à afficher avec un cardLayout

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Citation Envoyé par sinok
    Tant que tu connais le "clip" du composant que tu dois redessiner (c'est à dire le plus petit rectangle contenant la chose que tu veux réafficher tu peux toujours utiliser cette version de la méthode repaint.
    Ensuite que veux tu dire pr une 100aine de composants, si ce sont des composants swing, mieux vaurait repenser ton design car c'est foutrement trop. mieux vaudrait séparer ça en plusieurs panels différents à afficher avec un cardLayout
    en fait dans ce logciel de dessin chaque trait fait par l'utilisateur est un "objet" qui peut etre déplacé, zoomer ect ... j'utilise un librairie specifique ou chaque "objet" est un canvas à qui je peut associer un automate de comportement ...

    je vois difficilement comment faire des sous groupe ect ...

    sinon je vais regarder la méthode repaint () merci .

  4. #4
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    En ce genre de cas la combine usuelle est celle du Renderer. Elle est employée par le JTree et le JTable.

    Quand je dis combine, elle n'est pas très facile, en fait ; mais, au moins, elle est efficace. Elle n'est pas très facile parce que, à part cette interface, il n'existe pas de support particulier dans le jdk, et qu'elle revient pratiquement à re-créer un petit morceau de swing passionant, mais laborieux

    Son principe est que, au lieu de créer tes centaines de composants graphiques et de les ajouter au panneau d'accueil, tu ne les crées qu'au niveau modèle et que, pour le niveau visuel, tu n'utilises qu'un seul vrai composant graphique, composant qui te sert à dessiner, et seulement dessiner (d'où le terme de Renderer), tes centaines de composants graphiques.

    La difficulité est donc que, à partir de ton modèle, la phase du paint doit être capable d'orienter la situation et l'aspect de l'unique composant pour le dessiner de multiples fois.

    Et, bien sûr, le composant général doit gérer lui même tout ce qui est clic souris, focus, etc, puisque les composants affichés n'existent pas vraiment en termes graphiques swings.

    Si tu décides de suivre cette voie, je te donnerai d'autres infos si tu veux. Là j'ai juste essayé de te donner le principe.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Accessoirement c'est ce que l'on appelle un design FlyWeight:

    Plus d'infos par là:
    http://en.wikipedia.org/wiki/Flyweight_pattern

  6. #6
    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
    J'allais egalement dire poids mouche (mais la VF de l'article est mal ecrite et avec pas mal de repetitions inutiles), mais je ne me contenterai pas que d'un seul et unique renderer pour tout les objets (surtout s'il y en a beaucoup) ce qui peut rapidement amemer a une classe assez imbitable a lire au niveau 2D.

    A l'instar de la JTable il peut etre interressant de pouvoir specifier son propre renderer pour un certain type d'objet. Le tout serait stocke dans une Map<Class, EntityRenderer> et il peut etre interessant d'utiliser la reflection pour remonter les types de l'objet actuel a rendre histoire de trouver le meilleur renderer a utiliser.
    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

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

Discussions similaires

  1. quel programme pour dessiner un graphe a partir de données
    Par Tex-Twil dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 10/12/2007, 12h47
  2. Réponses: 8
    Dernier message: 23/10/2007, 07h16
  3. Déplacement d'un objet dessiné par paint
    Par bazzouz dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 30/08/2007, 02h18
  4. Insérer un dessin sous Paint dans un fichier Latex
    Par meloelody dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 17/05/2007, 11h27
  5. Réponses: 10
    Dernier message: 31/01/2006, 11h36

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