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 :

redimensionnement d'un drawString


Sujet :

2D Java

  1. #1
    Membre confirmé Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Par défaut redimensionnement d'un drawString
    Bonjour,

    J'ai dessiner un string (drawstring ) dan sun JPanel. Le probleme c'est que la taille de ce String est fixe quelque soit la taille de mon JPanel.
    Or quand je redimensionne ma JFrame, mon JPanel se redimensionne mais pas mon drawstring... et ca donne un rendu hmmmm comment dire .... horrible

    Pourriez vous m'aider ?

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Cela dépend un peu de la façon dont tu fais l'agrandissement et de la qualité que tu veux obtenir.

    Peut être peux-tu considérer ce qu'affiche ton panel comme une image, et, à l'agrandissement, tu agrandis une image ; tout va donc s'agrandir à l'échelle que tu auras donné. Cette technique fonctionne bien si on se contente d'une qualité grossière.

    Sinon, il faut modifier la taille de la police via Graphics.setFont, de façon proportionnelle et adéquate avec la taille générale.

  3. #3
    Membre confirmé Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Par défaut
    Salut,
    Merci de ta réponse.

    J'ai en fait ecrit une classe ou j'affiche mon DrawString().
    Voici mon code:

    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
    class TitleSynthese extends JPanel{
    	public String titre1;
    	public String titre2;
    	public String titre3;
     
        public TitleSynthese(String titre1, String titre2,  String titre3){
        	this.titre1 = titre1;
        	this.titre2 = titre2;
        	this.titre3 = titre3;
        	this.setBackground(new Color(196,221,252));
        }
     
        protected void paintComponent(Graphics g){
        	super.paintComponent(g);
            g.setColor(Color.black); 
            g.setFont(new Font("impact", Font.BOLD, 20)); 
            g.drawString(this.titre1,this.getWidth()/5+20,this.getHeight()/3);       
            g.setColor(Color.gray); 
            g.drawString(this.titre1,this.getWidth()/5-2+20,this.getHeight()/3-2); 
        }
    }
    La je fixe les police a 20, il faudrait donc que je les rendent dynamique par rapport a la taille du JPanel ... Mais je vois pas trop comment trouver une formule en fonction du de la largeur et/ou de la longueur qui me trouve la valeur de la taille d'un police... En sachant que si je ne modifie que la largeur, la police ne change pas vraiment mais se "ratatine" ...
    Dans ce cas la, il vaut mieux, comme tu me l'as dis, cosidéré mon JPanel comme une image... mais comment ?

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Citation Envoyé par mattyeux
    La je fixe les police a 20, il faudrait donc que je les rendent dynamique par rapport a la taille du JPanel ... Mais je vois pas trop comment trouver une formule en fonction du de la largeur et/ou de la longueur qui me trouve la valeur de la taille d'un police... En sachant que si je ne modifie que la largeur, la police ne change pas vraiment mais se "ratatine" ...
    C'est effectivement la difficulté de ce genre d'exercice. Mais ça se fait.

    Pour y parvenir, la clef est de toujours garder à l'esprit ce que signifie normal, lisible, cohérent, pour l'utilisateur. Il se peut très bien qu'il devienne normal et cohérent qu'un texte devienne illisible. Ou qu'il soit absolument nécessaire qu'un texte soit lisible, même si c'est incohérent. Il faut jouer avec toutes ces choses, et les utiliser au mieux, ce qui pose pas mal de problèmes techniques et ergonomiques.
    Citation Envoyé par mattyeux
    Dans ce cas la, il vaut mieux, comme tu me l'as dis, cosidéré mon JPanel comme une image... mais comment ?
    Il faut que tu actives la méthode paint (ou l'une de ses copines) en lui passant le Graphics d'une image ; puis tu ré-exploites cette image, pour la grossir ou la rapetisser, et l'afficher ensuite sur l'écran.

  5. #5
    Membre confirmé Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Par défaut
    Je cherche simplement que ca reste proportionnel a mon JPanel, c'est a dire qu'il soit lisible, au centre, et entièrement à l'intérieur du JPanel...
    J'essaye de bidouiler des formules mais c'est vraiment pas facile

  6. #6
    Membre confirmé Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Par défaut
    Bon, j'ai trouvé une formule en fonction la diagonale du JPanel calculé avec Pythagore... Ca marche pas mal ... C'est pas terrible terrible mais ca me convient pour le moment


    Merci pour ton aide giffftane

  7. #7
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Il y a plus simple : tu dessines le texte à la taille voule pour une taille de référence de ton composant refSize. Ensuite, tu appelles juste :
    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
    Graphics2D g2 = (Graphics2D) g;
    // on calcule l'échelle du zoom à appliquer
    double xscale = refSize.width / getWidth();
    double yscale = refSize.height / getHeight();
    double scale = Math.min(xscale, yscale);
    // on zoome
    g2.scale(scale, scale);
    // on dessine le composant comme si il avait la taille idéale refSize
    g.setColor(Color.black); 
    g.setFont(new Font("impact", Font.BOLD, 20)); 
    g.drawString(this.titre1,this.getWidth()/5+20,this.getHeight()/3);       
    g.setColor(Color.gray); 
    g.drawString(this.titre1,this.getWidth()/5-2+20,this.getHeight()/3-2); 
    // on dézoome
    g2.scale(1/scale, 1/scale);
    J'ai choisi d'appliquer le zoom minimum, tu peux aussi appliquer le zoom maximum ou un zoom horizontal différent du zoom vertical.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. [Kylix] Fenêtres non redimensionnables
    Par fred78 dans le forum EDI
    Réponses: 2
    Dernier message: 01/12/2002, 14h08
  2. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  3. redimensionnement d'une JWindow
    Par mbp566 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/08/2002, 03h41
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

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