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

AWT/Swing Java Discussion :

Comment dessiner deux axes en (0,0) avec un repere?


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut Comment dessiner deux axes en (0,0) avec un repere?
    salut ,

    je desire dessiner un axe 'X,y) ou X designe les degres de 0-360 et Y la distance de 0-300km
    sachant que pour chaque valeur cl" dans l'axe on ecrit sa valeur: exp: 0-
    la resolution est de 1010*1010 ...ce qui correpond a 1°--> 2.8pixels et 1km--->3.36pixels

    donc chaque valeur cles( multiples doit etre ecrite a son emplacement adequat..comme on dessine une echelle ou un repere classqiue.

    qualu'un pourrait il m'aider svp?

    merci

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    Tu auras la réponse dans la FAQ si tu cherches comment afficher une image dans un JPanel. Au lieu de dessiner une image, tu peux très bien dessiner du texte, des lignes, etc (regarde la classe Graphics et Graphics2D).

    Il y a aussi des librairies spécialisées dans les graphiques, de mémoire, je dirais JFreeChart ou dans le genre. Regarde sur le site, il doivent en proposer plusieurs. Ca t'évitera pas mal de boulot.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    je profite puisque tu es la ...
    dis moi stp c'est quoi selon toi le moyen le plus juste pour dessiner une image sur un jframe ou jpanel si l'on suppose que l'on va appliquer certaines modification a cette imge comme le zoom ...c'est a dire comment on peut stocker un dessin ou une image pour que les operations de zoom n'ecrase pas el contenu actuel d'une image ? y a t il un moyen pour faire cela?

    merci

  4. #4
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Pour afficher une image, c'est dans la FAQ ici.

    Ensuite, pour appliquer un zoom, tu n'as pas besoin de modifier l'image (pas d'opération sur l'objet BufferedImage, donc tu ne touches pas au contenu de l'image). Il te suffit d'utiliser les fonctions scale, rotate, etc de Graphics2D pour peindre l'image "différemment", c'est à dire à travers un traitement.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void paintComponent(Graphics graphics) {
      Graphics2D g = (Graphics2D) graphics;
    
      g.scale(2, 2); // on applique le zoom x2
      g.drawImage(maBufferedImage, 0, 0, null);
      g.scale(0.5, 0.5); // on annule le zoom pour revenir en x1
    
      g.drawString(...); // on dessine du texte en taille normale.
      g.drawImage(maBufferedImage, ...); // on redessine l'image, mais cette fois en taille normale.
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    salut,
    merci infiniement por ton aide ...je el savais pas a vrai dire ....le zoom marche merci..

    mais j'ai deux petits soucis encore et je compte vraiement sur ton aide :

    1- comment faire une simple transalation de l'image ? ( gauche , droite , haut ou bas)
    2- comment zoomer une zone particuliere de l'image ..par exemple zommer la partie cernée entre (x1, y1) et( x2,y2) par exemple?

  6. #6
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Alors, pour faire une translation il y a 2 solutions :
    - tu spécifies des coordonnées différentes de 0, 0 dans la méthode drawImage
    - tu utilises la méthode translate de Graphics2D (de la même manière que scale, il faut l'annuler après)

    Pour dessiner une partie zoomée de l'image, tu peux utiliser la méthode getSubImage de BufferedImage. Note aussi que pour le zoom, tu peux aussi utiliser une méthode drawImage qui précise la hauteur et la largeur de l'image. L'image sera zoomée automatiquement.

    Petit exemple, je dessine la partie centrale (de 200 x 150) d'une image de 400 x 300 en la zoomant 3 fois et avec une translation de 40 x 80 :
    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
    BufferedImage monImage; // image d'origine, en 400 x 300
    
    public void paintComponent(Graphics graphics) {
      Graphics2D g = (Graphics2D) graphics;
    
      // on extrait la partie centrale de l'image d'origine
      // elle fait 200 x 150
      BufferedImage subImage = monImage.getSubImage(100, 75, 200, 150);
    
      // subImage n'est qu'une partie de l'image d'origine
      // on la translate de 40 en horizontal et 80 en vertical
      // on applique un zoom pour qu'elle remplisse un rectangle de 600 x 450
      // (x3, puisque subImage ne fait que 200 x 150)
      g.drawImage(subImage, 40, 80, 600, 450, null);
    }
    Après ça, les images n'auront plus beaucoup de secrets pour toi !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    merci jeis essayer cet exemple....sinon aurais tu un lien utile ou un document ( pdf ou autre) pour bien maitriser tous ces traitements sur graphics et graphics2d?
    merci

  8. #8
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Pour la documentation, je me sers de la javadoc, mais consulter des codes sources sur internet ou de la JVM (notamment le package javax.swing.plaf qui contient les UI, le dessin des composants à coup de Graphics) m'a beaucoup servi.

    [EDIT] Cherche des tutoriels sur Java2D, il doit y en avoir sur les sites de développement de jeux vidéos entre autres.

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 854
    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 854
    Points : 22 876
    Points
    22 876
    Billets dans le blog
    51
    Par défaut
    Voir egalement la demo Java2Demo fournie dans le JDK (repertoire demo/jfc/java2D/)

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2015, 12h14
  2. Comment lire deux fois la meme table avec une clé différente
    Par Denis_67 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/12/2013, 11h25
  3. Réponses: 5
    Dernier message: 11/06/2007, 22h06
  4. Réponses: 1
    Dernier message: 13/04/2007, 22h29
  5. Comment comparer deux date en SQL Server avec VB.NET
    Par Pedro Varela dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/09/2006, 15h26

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