Graphics: Per drawString() Text vertikal zentriert zeichnen

Status
Nicht offen für weitere Antworten.

m@nu

Bekanntes Mitglied
bin langsam am verzweifeln

wie kann ich einen text vertikal zentriert in einem bereich zeichnen?
ich benutze bereits die FontMetrics-Klasse etc., doch leider komm ich auf keinen grünen zweig bei der berechnung des entsprechenden y-offset-punktes.

hab mir den source des TitledBorder's mal angesehen... naja, so kompliziert brauch ich's auch wieder nicht.
hat jemand eine lösung griffbereit?

danke & gruss
m@nu
 

MPW

Top Contributor
Worin zentrieren, in einem Label, einem TextField, einer Textarea...mal ein bisschen genauer...ein bisschen mehr Mühe beim Posten geben bitte - Danke!
 

lin

Top Contributor
vielleicht so...
Code:
Font f = new Font("Monospaced", Font.PLAIN, 10);
FontMetrics fm = getFontMetrics(f);
int y = 0.5*(bereich.height - fm.getHeight());

versteh aber auch net recht, was du meinst... :?
 
S

sir_miller

Gast
hallo, ich glaube der GlyphVector kann dir helfen.
Hier ein Beispiel aus meinem Programm:

{
FontRenderContext frc = g.getFontRenderContext();
Font f = new Font("Sans Serif", 0, 12);
GlyphVector gv = f // der GV bekommt eine Schrift zugewiesen
.createGlyphVector(frc, peChild.getName());
float a = (float) gv.getLogicalBounds().getWidth(); // ermitteln Länge des String
g.drawGlyphVector(gv, x - a / 2, y + 35); Setzen und a/2 ergibt mittig
}
 

m@nu

Bekanntes Mitglied
@MPW: hehe ... "zeichnen" impliziert für mich eigentlich dass ich das ganze per Graphics-instanz (von mir aus auch Graphics2D) machen möchte...
wie ich das in einem JLabel machen muss, is mir auch klar...
aber hast' ja recht ;) hab den post-titel mal ein wenig klarer gestaltet :)

@lin: ne, das funktioniert eben leider nicht... die drawString-methode benutzt nicht "oben-links" als 0/0-punkt... er verwendet irgend einen anderen, schrift-spezifischen, punkt als 0/0 (denk ich mal)

@sir_miller: ne, funktioniert für vertikales zentrieren leider auch nicht... :( trotzdem danke für die anregung! :)


hier meine beiden implementierungen bis anhin:
Code:
            // by sir_miller:
            FontRenderContext frc = g2.getFontRenderContext();  
            GlyphVector gv = textFont // der GV bekommt eine Schrift zugewiesen 
            .createGlyphVector(frc, getText());  
            float y = (float)gv.getLogicalBounds().getHeight();
            g2.setColor(Color.black);
            g2.drawGlyphVector(gv, 10, y/2); // Setzen und a/2 ergibt mittig

Code:
            // by m@nu
            g2.setFont(this.textFont);
            g2.setColor(Color.black);
            
            int y = halfHeight - (textHeight/2);
            g2.drawString(text, 10, y+3);

in meiner version habe ich das ganze einfach per "+3" gefixt... aber wies bei einer anderen schrift aussieht, habe ich keine ahnung :?


ps. mit folgendem code ermittle ich die zeilenhöhe:
Code:
            /* Zeilenhöhe: */
            FontMetrics metrics = getFontMetrics(textFont);
            int lineHeight = metrics.getHeight();
            
            /* Speichern: */
            this.textHeight = lineHeight;
 

m@nu

Bekanntes Mitglied
soooo... hab nochmal das offizielle java-forum von sun abgegrast, und eine lösung für das problem gefunden...

here it is:
Code:
            // Titel zeichnen: 
            g2.setColor(Color.black);
            TextLayout textLayout = new TextLayout(text,textFont, g2.getFontRenderContext());
            Rectangle2D bounds = textLayout.getBounds();
            int x = 8;
            int y = (int)((getHeight() - bounds.getHeight())/2-bounds.getY());
            textLayout.draw(g2, x, y);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
M JFrame Graphics.drawString Problem AWT, Swing, JavaFX & SWT 11
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R AWT Graphics initialisieren AWT, Swing, JavaFX & SWT 15
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
B Graphics to Image AWT, Swing, JavaFX & SWT 3
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Graphics -> Graphics2D etwas zu beachten? AWT, Swing, JavaFX & SWT 8
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
M Graphics.fillOval AWT, Swing, JavaFX & SWT 1
javampir Sauberes Faden mit awt Graphics AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
I JavaFX Graphics Performance AWT, Swing, JavaFX & SWT 2
vodkaz Graphics aufrufen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
R Ankerpunkt bei Graphics AWT, Swing, JavaFX & SWT 3
R Fließende Bewegung von Graphics AWT, Swing, JavaFX & SWT 6
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
P "Graphics" wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
B Swing Zeilenumbruch in Graphics AWT, Swing, JavaFX & SWT 20
T Graphics zeichnet nicht AWT, Swing, JavaFX & SWT 2
T Applet graphics - zeichnen funktioniert nicht AWT, Swing, JavaFX & SWT 14
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
S Zeichnen mit java.awt.Graphics AWT, Swing, JavaFX & SWT 6
D Graphics zeichnen AWT, Swing, JavaFX & SWT 6
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
T Graphics Ersetzend Zeichnen AWT, Swing, JavaFX & SWT 6
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
A AWT AWT Panelfenster mit Graphics kombinieren AWT, Swing, JavaFX & SWT 7
T Graphics Parameterübergabe AWT, Swing, JavaFX & SWT 3
K Graphics.drawImage() sehr schnell AWT, Swing, JavaFX & SWT 5
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
M Graphics.drawImage verlangsamt sich plötzlich AWT, Swing, JavaFX & SWT 15
S Swing AWT (graphics (g)) AWT, Swing, JavaFX & SWT 27
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
B Swing Tooltips auf Graphics AWT, Swing, JavaFX & SWT 8
Ä Graphics-Komponente auf JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4
J getFontMetrics außerhalb von paint(Graphics g) AWT, Swing, JavaFX & SWT 8
E Problem bzw. Sinn von Graphics / Graphics Context AWT, Swing, JavaFX & SWT 21
S Weder ActionListener noch Graphics wollen so recht AWT, Swing, JavaFX & SWT 3
F Methode drawOval(int,int,int,int) von graphics AWT, Swing, JavaFX & SWT 4
G Graphics Objekte in AWT Container einfügen AWT, Swing, JavaFX & SWT 2
S Mit Graphics g ins Fenster zeichnen AWT, Swing, JavaFX & SWT 4
G Graphics - Raute AWT, Swing, JavaFX & SWT 3
G "pinseldicke" bei Graphics? AWT, Swing, JavaFX & SWT 2
G Graphics.drawImage() AWT, Swing, JavaFX & SWT 6
D Methode Graphics g klassenübergreifend nutzen. AWT, Swing, JavaFX & SWT 3
W java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Dev AWT, Swing, JavaFX & SWT 1
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
T Transparenz bei Graphics AWT, Swing, JavaFX & SWT 9
L Graphics AWT, Swing, JavaFX & SWT 37
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3
Y Problem mit der Referenz eines Graphics-Objekts AWT, Swing, JavaFX & SWT 5
O Graphics erstellt Componente scheinbar nicht richtig AWT, Swing, JavaFX & SWT 23
G 2x Graphics in einer paint() miteinander verbinden AWT, Swing, JavaFX & SWT 11
K Gutes Buch gesucht (Graphics Only) Kennt jemand eins? AWT, Swing, JavaFX & SWT 5
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
J Einmal gleichzeitig auf zwei Graphics malen? AWT, Swing, JavaFX & SWT 5
E Image, Graphics, verzögert zeichnen AWT, Swing, JavaFX & SWT 2
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
H neuzeichnen von graphics nach minimierung oder ähnlichem AWT, Swing, JavaFX & SWT 10
G SWT Graphics Zeichnung neu laden AWT, Swing, JavaFX & SWT 13
G SWT Graphics GC Problem AWT, Swing, JavaFX & SWT 6
M Abstrakte Graphics Klasse erzeugen AWT, Swing, JavaFX & SWT 2
H awt Graphics und Image selbermachen ? AWT, Swing, JavaFX & SWT 12
D Image aus Graphics erstellen? AWT, Swing, JavaFX & SWT 2
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
raptorrs J2D graphics, sind 500px immer 500 px AWT, Swing, JavaFX & SWT 2
G Graphics AWT, Swing, JavaFX & SWT 2
H Graphics: Schriftgröße ändern AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben