PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java - Text zeichnen in bestimmten Winkel


Gast
2008-05-26, 14:03:36
Hallo!
Ich verzweifle noch: Ich möchte eigentlich nur einen Text/String an einem Punkt (x,y) auf einem Panel zeichnen. Der Text soll in einem bestimmten Winkel gedreht sein (0-360Grad).
Ich versuche dies nun schon seit heute Vormittag, aber ich blicke nicht mehr durch (AffineTransformationen, Rechtecke, Offscreen-Images, ?!?).
Im Internet gefundene Beispiele (irgendwelche Textklassen, die Streckung, Spiegelung usw unterstützen) sind so umfangreich, dass sie 99% meines Codes ausmachen würden. Das muss doch einfacher und kompakter gehen.

Hat bitte jemand ein leicht nachvollziehbares Beispiel parat?

DocEW
2008-05-26, 17:05:56
Das hier

http://forum.java.sun.com/thread.jspa?threadID=296843&forumID=57

sieht doch nicht allzu kompliziert aus. Hab's allerdings nicht ausprobiert.

Gast
2008-05-26, 18:18:26
http://mitglied.lycos.de/bratworscht/bilder/drehtext.jpg

[code]double deg = Math.toDegrees( Math.atan2( y1 - y2, x2 - x1 ) );
if (deg < 0)
deg = 360 - Math.abs(deg);

...

AffineTransform oldaf = g2d.getTransform();
AffineTransform af = new AffineTransform();
af.translate( drawpos.x, drawpos.y );
af.rotate( -Math.toRadians( deg ) );
g2d.setTransform( af );
g2d.drawString( s, 0, 0 );
g2d.setTransform( oldaf );
g2d.fillOval( drawpos.x, drawpos.y, 5, 5 ); //debug
...
[code]

Ich möchte den Winkel der Strecke zwischen den beiden Punkten (x1,y1) und (x2,y2) berechnen. In diesem Winkel soll der Text gedreht werden. Grob funktioniert das nun, aber bei bestimmten Werten von "deg" verzerrt der Text (siehe Bild): 0/360, 90, 180 Grad. Ist der Winkel irgendwo dazwischen, zb 20 Grad, dann wird der Text 'normal' gezeichnet.
Ich weiss nicht, wieso. :(