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 :

FontMetrics - stringWidth


Sujet :

2D Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut FontMetrics - stringWidth
    Bonjour,

    Je cherche à dessiner une chaîne de caractères dans un rectangle et lorsque cette chaîne est plus large que celui-ci, j'aimerais la couper en deux pour dessiner la suite à la ligne mais pour celà, il me faut connaître l'indice dans la chaîne où je dois la diviser.

    Je sais que la méthode stringWidth me permet de récupérer le nombre de pixels correspondant à celle-ci mais j'aurais également aimé pouvoir à partir d'un nombre de pixels récupérer l'indice correspondant dans la chaîne.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    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 900
    Billets dans le blog
    54
    Par défaut
    Il t'es possible de recuperer le GlyphVector qui est une liste des glyphes (les formes de chaque caractère) formant la chaine et donc ainsi d'arriver a plus facilement calculer quelle place occupe quel caractère.
    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

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Par défaut
    Bonjour,

    Je te remercie pour ton aide mais j'ai finalement trouvé une meilleure solution en utilisant la classe LineBreakMeasurer :

    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
    public static void dessinerTexte(Graphics2D g2d, String txt, int x, int y, int wrappingWidth) {
    		Point initPoint = new Point(x, y);
    		FontRenderContext frc = g2d.getFontRenderContext();
     
    		AttributedString par = new AttributedString(txt);
    		par.addAttribute(TextAttribute.FONT, g2d.getFont());
    		AttributedCharacterIterator paragraph = par.getIterator();
     
    		LineBreakMeasurer measurer = new LineBreakMeasurer(paragraph, frc);
     
    		while (measurer.getPosition() < paragraph.getEndIndex()) {
    			TextLayout layout = measurer.nextLayout(wrappingWidth);
     
    			initPoint.y += (layout.getAscent());
    			float dx = layout.isLeftToRight() ? 0 : (wrappingWidth - layout.getAdvance());
     
    			layout.draw(g2d, initPoint.x + dx, initPoint.y);
    			initPoint.y += layout.getDescent() + layout.getLeading();
    		}
    	}

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

Discussions similaires

  1. Objets Font et FontMetrics
    Par perldebutant dans le forum 2D
    Réponses: 5
    Dernier message: 03/01/2008, 19h57
  2. Question sur l'utilisation de FontMetrics
    Par HNT dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/10/2006, 15h47

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