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 :

Rotation d'un string d'un TextLayout


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Points : 334
    Points
    334
    Par défaut Rotation d'un string d'un TextLayout
    Bonjour,

    J'ai suivi le tutoriel d'Oracle pour écrire des strings sur plusieurs lignes dans un Graphics2D (http://docs.oracle.com/javase/tutori...mulstring.html)

    Ca fonctionne très bien. Par contre, j'aimerais faire une rotation de certains degrés de ces strings, et là ça ne fonctionne plus.

    Voilà comment je m'y suis pris:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Font fontInfos = new Font("SansSerif", Font.BOLD, (int)(9*_zoomEtat));
    g2.setColor(Color.GRAY);
    for(Forme forme:_metier.getCoordonneesDessin()) {
        Point2D p = forme.getCoordInfo();
        if(p!=null) {
            double x = p.getX();
            double y = p.getY();
            x = x-_mapGauche;
            y = y-_mapHaut;
            x = (x*_coefX);
            y = h - (y*_coefY);
     
            AffineTransform transform = new AffineTransform();
            transform.rotate(Math.toRadians(30));
     
            AttributedString nom = new AttributedString(forme.getNom());
            nom.addAttribute(TextAttribute.FONT, fontInfos);
            nom.addAttribute(TextAttribute.TRANSFORM, new TransformAttribute(transform)); //cette ligne semble ne pas fonctionner
     
            AttributedCharacterIterator paragraph = nom.getIterator();
            int paragraphStart = paragraph.getBeginIndex();
            int paragraphEnd = paragraph.getEndIndex();
            LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, g2.getFontRenderContext());
            lineMeasurer.setPosition(paragraphStart);
            float drawPosY = 0;
            while (lineMeasurer.getPosition() < paragraphEnd) {
                TextLayout layout = lineMeasurer.nextLayout((float)(100*_zoomEtat));
                drawPosY += layout.getAscent();
     
                layout.draw(g2, (float)(x), (float)(y+drawPosY));
                drawPosY += layout.getDescent() + layout.getLeading();
            }
        }
    }
    Merci

  2. #2
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Points : 334
    Points
    334
    Par défaut
    Bon en fait j'ai réussi en passant par le Graphics2D pour la rotation, et non pas le AttributedString.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while (lineMeasurer.getPosition() < paragraphEnd) {
        TextLayout layout = lineMeasurer.nextLayout((float)(100*_zoomEtat));
        drawPosY += layout.getAscent();
     
        Rectangle2D bounds = layout.getBounds();
        AffineTransform transform = new AffineTransform();
        transform.rotate(Math.toRadians(forme.getAngleInfo()), x, y);
        g2.setTransform(transform);
     
        layout.draw(g2, (float)(x), (float)(y+drawPosY));
        drawPosY += layout.getDescent() + layout.getLeading();
    }

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

Discussions similaires

  1. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 15h55
  2. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 21h22
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 10h47
  4. Réponses: 2
    Dernier message: 05/06/2002, 13h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 16h23

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