Texte in Java2d

Status
Nicht offen für weitere Antworten.

Beathoven

Mitglied
Hallo zusammen,

Ich kämpfe mich gerade ein wenig durch diese ganzen Java2D Sachen - bis jetzt läufts auch ganz gut:
ich kann Linien malen und Flächen füllen.. sowas halt.

AAABER:

Jetzt will ich einen Text schreiben, jedoch will ich diesen zentrieren.

Bis jetzt gehe ich so vor:

Code:
Graphics2D g2d = image.createGraphics();
g2d.setColor(Color.BLACK);
Font myFont = new Font("Arial", Font.CENTER_BASELINE, 12);
g2d.setFont(myFont); //Schriftart setzen
g2d.drawString("Mein erster Text", bildbreite / 2, bildhoehe / 2);

Ich platziere den ersten Pixel meines Texts also genau in der Mitte (m)eines Bildes.

Damit ist der Text aber linksbündig - iiiiich will aber, dass die Mitte des Texts sich an der Position befindet, die ich angegeben habe.

Also muss es irgendeine Funktion "center" oder sowas geben, oder ich muss den String vorher irgendwie definieren und ausrechnen können, wie groß (lang) er letztlich ist :)

Klingt komisch, ist aber so ;)

Danke schonmal für Eure Hilfe -

LG
Beathoven
 

Quaxli

Top Contributor
Eine Zentrierfunktion gibt es nicht -glaube ich (lasse mich gerne korrigeren).
Ausrechnen kannst Du es über FontMetrics, die kriegst Du über getFontMetrics(...) (Methode des Graphics-Objekts) (vgl. API).
 

Quaxli

Top Contributor
Ich könnte jetzt fragen, wo Dein Problem ist, aber offensichtlich hast Du nicht mal durch die API geguckt, oder.
Sei's drum, ich bin gerade gutmütig:

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

import javax.swing.*;

public class Test extends JPanel{

	private static final long	serialVersionUID	= 1L;
  String text = new String("Steht eigentlich alles in der API");

	public static void main(String[] args) {
		new Test();
	}
	
	public Test() {
		JFrame frame = new JFrame("demo");
    frame.setLocation(100,100);
	  frame.setSize(300,300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		frame.add(this);
		
		frame.setVisible(true);
	}
	
	public void paintComponent(Graphics g) {
	  super.paintComponent(g);
		g.setColor(Color.RED);
		g.drawString(text,(getWidth()-computeTextSize(g))/2,50);

	}

  private int computeTextSize(Graphics g){
  	int size = 0;
  	
  	FontMetrics fm = g.getFontMetrics();
  	for(int i=0;i<text.length();i++){
  		size += fm.charWidth(text.charAt(i));
  	}
  	System.out.println("size = " + size);
  	
    return size;  	
  }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
lumo Java2D oder doch OpenglES Spiele- und Multimedia-Programmierung 4
windl CoverFlow in Java2D erstellt Spiele- und Multimedia-Programmierung 24
Kr0e Java2D - Was ist die bewährte Rendermethode ? Spiele- und Multimedia-Programmierung 2
E Wie rendert Java2D/AWT BufferedImages Spiele- und Multimedia-Programmierung 9
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
S Java2D: AffineTransformation - KOS Spiegeln Spiele- und Multimedia-Programmierung 5
T Transformationen in Java2D Spiele- und Multimedia-Programmierung 6
K Hardwarebeschleunigung für Java2D Spiele- und Multimedia-Programmierung 9
R Java2D-Komponenten Spiele- und Multimedia-Programmierung 6
A Java2D Spiel "JSlotter" Spiele- und Multimedia-Programmierung 3
B Java2D: Gradientpaint Spiele- und Multimedia-Programmierung 2
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
M Java2D: GradientPaint mit mehreren Farben Spiele- und Multimedia-Programmierung 4
T Java2D Spiel, beim Hinzufügen eines Bildes ruckelt das ganze Spiele- und Multimedia-Programmierung 3
G SNES Mode7 mit Java2D? Spiele- und Multimedia-Programmierung 2
C Java2D Darstellungsfehler Spiele- und Multimedia-Programmierung 2
C OpenGl Support für Applet (sun.java2d.opengl=True) Spiele- und Multimedia-Programmierung 3
S [Java2D] Performance Frage Spiele- und Multimedia-Programmierung 4
V Java2D dynamische Kurven Spiele- und Multimedia-Programmierung 3
G Punkte des Kreises ausgeben (Java2D) Spiele- und Multimedia-Programmierung 4
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10

Ähnliche Java Themen


Oben