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:

Forum-Statistiken

Themen
272.355
Beiträge
1.558.613
Mitglieder
187.829
Neuestes Mitglied
AlDi31