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 :

[Débutant] Graphics Mauvaise Qualité


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut [Débutant] Graphics Mauvaise Qualité
    Bonjour,

    Je suis débutant en AWT/Swing alors soyez indulgent.

    Je veux réaliser un composant graphique. Je dessine des trucs tout bêtes genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class JTest extends JComponent
    {
        public void paint(Graphics g)
        {
            g.setColor(Color.GREY);
            g.fillOval(x, y, 5, 5);
            g.setColor(Color.BLACK);
            g.drawOval(x, y, 5, 5);    
            super.paint(g);
        }
    }
    Et bah le résultat est tout moche, mon rond ne ressemble pas vraiment à un rond

    Comment puis-je améliorer la qualité du dessin ?

    Est-ce lié à ma résolution graphique ou à Java ?

    Dois-je passer par des images ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Il faut que tu te poses la question des valeurs de x et y. On sont-elles initialiser ? Quels sont leurs valeur ?

    Si tu rajoutes ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void paint(Graphics g)
        {
        	int x = 10;
        	int y = 10;
     
            g.setColor(Color.blue);
            g.fillOval(x, y, 50, 50);
            g.setColor(Color.BLACK);
            g.drawOval(x, y, 50, 50);    
            super.paint(g);
        }
    Et que tu passes de 5 a 50 pour la largeur et la hauteur du cercle tu vas avoir un bôooh cercle

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Pour améliorer la qualité en ajoutant, entre autre, de l'antialiasing tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	Graphics2D g2D = (Graphics2D) g.create();
    	g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    	g2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par Iyoiyo Voir le message
    Et que tu passes de 5 a 50 pour la largeur et la hauteur du cercle tu vas avoir un bôooh cercle
    J'initialise bien x et y, là j'ai juste oublié pour faire l'exemple.

    Forcément si je passe de 5 à 50 je vais voir un vrai cercle mais bon le but c'est de faire un petit cercle donc

    J'ai testé ce que natha propose, c'est un peu mieux...

    J'ai mis en pièce jointe ce que celà donne, peut-être que je chipotte mais je trouve pas que celà ressemble vraiment à des ronds

    Bon on doit pas pouvoir descendre en-dessous du pixel, mais bon il pourrait lisser sur les pixels voisins...
    Images attachées Images attachées  

  5. #5
    Membre habitué
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Je pense que natha a mieux répondu que moi à la question

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    En même temps, dessiner des formes ovales de diamètre 5... c'est pas l'idéal car 5/2 ça donne 2.5 ! Et des demi-pixel ça n'existe pas.

    Il y a 2 solutions, soit passer à 6, soit faire ça qui devrait être plus joli :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2D.fillRoundRect(x, y, 5, 5, 2, 2);
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Bon c vrai que ça fait petit !

    Je vais faire ce que tu as proposé !

    Merci beaucoup !

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

Discussions similaires

  1. Mauvaise qualité avec wglUseFontOutlines
    Par render-nick dans le forum OpenGL
    Réponses: 0
    Dernier message: 31/07/2007, 21h51
  2. Son de tres mauvaise qualité sous Mandriva
    Par Cazaux-Moutou-Philippe dans le forum Mandriva / Mageia
    Réponses: 12
    Dernier message: 06/07/2007, 19h19
  3. [FLASH 5] Mauvaise qualité des captures d'écran
    Par fredhali2000 dans le forum Flash
    Réponses: 1
    Dernier message: 11/08/2006, 14h53
  4. [GD] Mauvaise qualité des textes en jpeg
    Par coolmic dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/05/2006, 18h15
  5. [ImageMagick] Texte -> image : très mauvaise qualité ?
    Par Yusuke dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/11/2005, 19h17

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