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:
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