Vertikalen Text zentrieren (Graphics2D)


Marco7757

Mitglied
Ich möchte gerne einen vertikalen Text anzeigen, dessen Mitte genau auf der Mitte des Rechtecks liegt, in dem er angezeigt werden soll.

Wenn die Höhe des Rechtecks nun 400 Pixel beträgt, dann wäre die Hälfte 200. Doch wenn ich bei y=200 zu schreiben beginne, dann ist der Text am Ende ja zu hoch.
Was ich bräuchte wäre die Länge des Textes, die ich dann durch 2 Teilen und von 200 abziehen kann, damit die Mitte des Textes schön die Mitte des Rechtecks trifft.
Aber wie bekomme ich die Länge meines (variablen) Textes heraus?

Java:
//Vertikalen Text zeichnen (aus einer Funktion, die label, theta und x, sowie y als Parameter bekommt)
g2.setFont(new Font(font, 0, fontSize+2));
g2.translate(x, y);
g2.rotate(theta);
g2.translate(-x, -y);
g2.drawString(label, x, y);

//FRAGE: Wie lang ist 'label', wie viele Pixel nimmt dieser Text ein?
 

Herbertus

Mitglied
Java:
   private int textheight(Font f, Graphics2D g, String s) {

      LineMetrics lm = f.getLineMetrics(s, new FontRenderContext(g.getTransform(), true, true));

      // Hoehe ermittlen.. lm.getHeight() kann ungenau sein
      double height = lm.getAscent() + lm.getDescent() + lm.getLeading();

      // Aufrunden, weil lieber etwas mehr platz als zuwenig ?
      height = Math.ceil(height);

      return (int)height;

   }

Java:
   private int textwidth(String s, Graphics g) {

      FontMetrics fontmetric = g.getFontMetrics();

         int stringwidth  = fontmetric.stringWidth(s);

      return stringwidth;

   }

Könnte so klappen^^
 
Zuletzt bearbeitet:

Neue Beiträge

Forum-Statistiken

Themen
272.359
Beiträge
1.558.621
Mitglieder
187.832
Neuestes Mitglied
SirrDansen